Python模块讲解-os、shutil、zipfile、sys
1. os模块用法
- os.getcwd():获取当前工作路径
- os.chdir():改变当前工作路径
- os.makedirs():创建新文件夹
- os.path.join():文件路径进行拼接
- os.path.abspath(path):将返回参数的绝对路径的字符串
- os.path.isabs(path):判断参数是否为绝对路径
- os.path.relpath(path,start):将返回从start路径到path的相对路径的字符串,如果没有提供start,就是用当前工作目录作为开始路径。
- os.path.dirname(path):返回路径的目录名称
- os.path.basename(path):返回目录的最后文件的基本名词
- os.path.split():同时获取目录名称和基本名称的两个字符串组成的元祖
- os.path.getsize(path):将返回path参数中文件的字节数
- os.listdir(path):将返回path路径下所有文件和目录的列表
- os.path.exists(path):判断path路径是否存在
- os.path.isfile(path):判断path是否是一个文件
- os.path.isdir(path):判断path是否是一个目录
2. 读写文件
2.1 在python中,读写文件有三个步骤:
- 调用open()函数,返回一个File对象
- 调用File对象的read()或write()方法。
- 调用File对象的close()方法,关闭该文件。
3. shutil模块
可以实现对文件的复制、移动、改名和删除操作。
3.1.1 复制文件和文件夹
- shutil.copy(source,destination):复制一个文件;将路径source处的文件复制到路径destination处的目录。如果destination是一个文件名,他将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。
- shutil.copytree(source,destination):复制整个文件夹,以及它包含的文件夹和文件。
3.1.2文件和文件夹的移动与改名
- shutil.move(source,destination):将路径source处的目录移动到路径destination,并返回新位置的绝对路径的字符串。
- 如果destination有一个与移动文件同名的文件,那么destiontion的文件将会被覆盖,所以在使用move()方法的时候要小心。
- destination路径也可以指定一个文件名,意思是将source移动到destination后,改一个新名字。
3.1.3 永久删除文件和文件夹
利用os模块中的函数,可以删除一个文件或一个空文件夹。但利用shutil模块,可以删除一个文件夹及其所有的内容。
- 用os.unlink(path)将删除path处的文件
- 调用os.rmdir(path)将删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。
- 调用shutil.rmtree(path)将删除path处的文件夹,它包含的所有文件和文件夹都会被删除。
注意:在程序中使用这些函数时要小心,可以第一次运行程序时,注释掉这些调用,并且加上print()调用,显示会被删除的文件,这样防止误删除。
3.1.4 遍历目录树
os.walk()在循环的每次迭代中,返回3个值:
- 当前文件夹名称的字符串
- 当前文件夹中子文件夹的字符串的列表
- 当前文件夹中文件的字符串的列表
import os for foldername,subfolders,filenames in os.walk('/Users/liuweidong/PycharmProjects/pythonProject/Student_Information/'): print('&&&&&&&&&',foldername) for subfolder in subfolders: print('%%%%%%%%%%%%', subfolder) for filename in filenames: print('*****************',filename)
4. 用ZipFile模块压缩文件
4.1 读取ZIP文件
import zipfile # namelist()方法,返回zip文件中包含的所有文件和文件夹的字符串列表。 #这些字符串可以传递给getinfo()方法,返回一个关于特定文件的zipinfo对象。 #file_size和compress_size,分别表示文件大小和压缩后文件大小。 examplezip = zipfile.ZipFile('test1.zip') print(examplezip.namelist()) spaminfo = examplezip.getinfo('test1/test.py') print(spaminfo.file_size) print(spaminfo.compress_size)
4.2从zip文件中解压缩
import zipfile #extractall()解压zip文件,括号内可以指定解压的路径,不存在则创建 #extract()解压指定文件,内容必须匹配namelist()返回的字符串列表中的一个,第二个参数也可以指定解压路径,不存在则创建 examplezip = zipfile.ZipFile('test1.zip') #examplezip.extractall() examplezip.extract('test1/test.py') examplezip.close()
4.3创建和添加到ZIP文件
import zipfile # 创建了一个新的new.zip文件,并且将student.txt添加至new.zip压缩文件中,zipfile.ZIP_DEFLATED为指定压缩类型 newzip = zipfile.ZipFile('new.zip','w') newzip.write('student.txt',compress_type=zipfile.ZIP_DEFLATED) newzip.close()
5. sys模块
sys模块中有一个argv方法,argv列表中的第一个元素是命令行程序的名称,其余的命令行参数以字符串的形式保存在该列表中。
不积跬步,无以至千里;不积小流,无以成江海。