Python_Day11 - 目录 & 包 & 模块

1. 目录

1.1 遍历目录

import os


# 遍历目录
def search_dir(path):
	#列出指定路径的所有文件和文件架
    filename_list = os.listdir(path)

    for filename in filename_list:
        # file_path: 每个子文件或子文件夹的绝对路径
        file_path = os.path.join(path, filename)

        # 如果是文件
        if os.path.isfile(file_path):
            print("文件名:", filename)
        # 如果是目录
        elif os.path.isdir(file_path):
            print("目录名:", filename)

            # 递归遍历当前目录的子目录
            search_dir(file_path)

#要遍历的目录
search_dir(r'C:\Users\ijeff\Desktop\Python2003\day11\code\newdir')

1.2 使用递归遍历目录

import os

def getAll(path):
 #1.获取当前目录下所有的文件以及文件夹
 fileList = os.listdir(path)

 #2.遍历列表
 for i in fileList:
     #3.拼接路径
     filePath = os.path.join(path,i)

     #4.判断filePath是否是文件夹
     if os.path.isdir(filePath):
         #文件夹:递归
         getAll(filePath)
     else:
         #文件
         print("文件:", i)

getAll(r"C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code")

2. 包

2.1 概念


初期理解为文件夹

包和文件夹之间的区别:
Python的包中有一个特殊的文件__int__.py文件,前期里面不写任何内容,但是,就是为了告诉编译器,当前这个目录不是普通目录,是一个包

创建方式:
选中工程,创建Python package

3. 模块

3.1 概念

a. 模块
每一个.py文件就是一个模块

b. 封装思路:
函数 ==> 类 ==> 模块 ==> 包 ==> 项目

c. 类别
1.内置模块:Python提供的模块
2.自定义模块: 自己写的模块
3.第三方模块: 别人写的模块

3.2 OS模块

a. 概念:
提供有关操作系统的函数,处理文件或者文件夹

3.2.1 os模块的操作

a. 获取当前操作系统的名称 【os. name】

语法:
import os
print(os. name)

‘’’
nt----->Windows
posix------>Linux, Mac os
‘’’

b.获取当前系统的环境变量 【os. environ】

语法:
import os
print(os.environ)
print(os.environ.get(‘PATH’))

c.获取当前的目录【os. getcwd】

语法:
import os
print(os. getcwd())

d.获取指定路径下的所有文件或者目录的名字【os. listdir】

语法:
import os
print(os. listdir(‘绝对路径名’))
(注意:返回的是一个列表)

e.创建单级目录【os. mkdir】

语法:
import os
print(os.mkdir(‘文件夹名’))

#创建一个名字为———— 的文件夹

f.创建多级目录【os. makedirs】

语法:
import os
print(os.makedirs(‘递归的目录名’))

#path——需要递归创建的目录,可以是 “/tmp/home/monthly/daily” 这样

#执行这句代码,就会生成n个文件夹

g. 删除单级空目录【os. rmdir】

语法:
import os
print(os.rmdir(‘目录名’))

(除单级空目录,若目录不为空则无法删除)

h. 删除多级目录 【os. removedirs】

语法:
import os
print(os.removedir(‘递归的目录名’))

(方法用于递归删除目录。像rmdir(), 如果子文件夹成功删除, removedirs()才尝试它们的父文件夹)

i. 删除指定文件 【os. remove】

语法:
import os
print(os. remove(‘文件名’))

j. 重命名目录/文件 【os. rename】

语法:
import os
os.rename(old_name,new_name)
‘’’
old_name——要修改的文件名/目录名
new_name——修改后的文件名目录名
‘’’

k. 返回当前目录 【os. curdir】

语法:
import os
print(os.curdir) #直接使用返回 .
#(’.’)表示当前路径

print(os.path.abspath(os.curdir))
#与os.getcwd()结果

l. 返回当前目录的父目录【os. pardir】

语法:
import os
print(os.pardir) #直接使用返回 …

print(os.path.abspath(os.pardir)) #上级目录
 #(’…’)表示父目录

其他

文件属性(了解)
print(os.stat(‘文件名’))

3.2.2 os.path的操作

a. 将多个路径拼接【os.path.join】

语法:
import os
os.path.join(‘路径1’,‘路径2’,‘路径3’…)

b. 拆分当前文件名【os.path.split】

语法:
import os
os.path.split(‘绝对路径’)

import os
os.path.split('C:\\Users\\Users\\ijeff\\Desktop\\Python2004\\day11\\code')

#('C:\\Users\\Users\\ijeff\\Desktop\\Python2004\\day11', 'code')只拆分当前文件夹

c. 拆分文件名称和扩展名【os.path.splitext】

语法
import os
print(os.path.splitext(‘文件名. 扩展名’)

import os
print(os.path.splitext(‘aaa.py’)
# => ('aaa', '.py') 返回元组

(分割路径,返回路径名和文件扩展名的元组)

d. 获取文件大小【os.path.getsize】

语法:
import os
os.path.getsize('文件路径‘):

import os
print(os.path.getsize(r'C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code\02_os模块_下.py'))
#返回XXXX

e. 获取指定文件的绝对路径 【os.path.abspath】

语法:
import os
os.path.abspath('文件名’):

import os
print(os.path.abspath('a.txt'))
print(os.path.abspath(__file__))  #__file__: 当前文件名

语法:

f. 文件或目录是否存在【os.path.exists】

dir_path = r’C:\Users\ijeff\Desktop\Python2004\day11\code’
file_path = r’C:\Users\ijeff\Desktop\Python2004\day11\code\02_os模块.py’

print(os.path.exists(dir_path))
print(os.path.exists(file_path))

g. 是否为文件【os.path.isfile】

print(os.path.isfile(dir_path))
print(os.path.isfile(file_path))

h. 是否为目录【os.path.isdir】

print(os.path.isdir(dir_path))
print(os.path.isdir(file_path))

i. 父目录【os.path.dirname】

print(os.path.dirname(dir_path))

j. 文件名【os.path.basename】

print(os.path.basename(file_path))

import os
dir_path = r'C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code'
file_path = r'C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11\code\02_os模块_下.py'

# os.path.dirname(): 父目录
print(os.path.dirname(dir_path))	
#C:\Users\Lancelot_L\Desktop\Pycharm Project\Python2004\day11


# os.path.basename(): 文件名
print(os.path.basename(file_path)	#02_os模块_下.py

3.3 模块的导入

3.3.1 import

  1. 当通过import将模块导入的时候,将模块对应的文件整个加载了一遍

  2. 当导入自定义模块的时候,需要注意包的存在

3.当模块有包的层级关系时,需要调用其中函数的时候,需要指明函数的路径

格式:
import 包
import 包.模块

#调用内置模块
import os

#调用多个内置模块
import os, math, random

#调用自定义模块,需要先调入包
#前提:当前文件必须和调用的包的目录为同一等级
import 包名. 模块名

3.3.2 from…import…

使用from…import…可以精确的调用模块中的指定函数,而不用把整个模块进行读取

#精确的调用模块中的指定函数
from 包名.模块名 import 函数名1,函数名2...

#调用包中的某个模块
from 包名 import 模块名

4. name属性和dir函数

4.1 name

#__name__的作用:如果不想让模块中的某些代码执行,可以通过属性仅仅调用程序中的一部分功能
#【写在if判断中的代码只有当前模块被执行的时候才会被执行,检测到是其他的文件在使用当前的模块,则if语句中的代码不会被执行】

def fun1():
 print("aaa")

def fun2():
 print("bbb")

def fun3():
 print("ccc")


#作用:写在下面判断中的代码,只有当前模块运行的时候才会被执行【起到屏蔽的作用】
if __name__ == "__main__":
 fun1()
 fun2()
 fun3()

4.2 dir函数

import math,moduleTextDemo01

#获取指定模块里面的所有的内容
#dir(模块名称)  返回的是一个列表
print(dir(math))
print(dir(moduleTextDemo01))

你可能感兴趣的:(Python)