内容参考自《python变成快速上手》
首先明确一点,Windows的路径在python中写为(‘c:\Users\xxx’);mac OS和Linux则写成(‘usr/bin/xxx’)。
此处需要用到os模块
1、os.path()
①os.path.join()
如果想要程序运行在不同的操作系统时,对文件路径的处理可以使用该方法
>>>os.path.join('xxx','xx')
'xxx\\xx' #Windows上运行时
或'xxx/xx' #Linux上运行时
②os.path.dirname()
获得路径中最后一个斜杠前的内容
>>>os.path.dirname('C:\\windows\\xxx.txt')
C:\\windows\\
③os.path.basename()
与上互相不同,返回最后一个斜杠后的内容
>>>os.path.basename('C:\\windows\\xxx.txt')
xxx.txt
④os.path.getsize()
获得文件大小
>>>os.path.getsize('C:\\windows\\xxx.txt')
123456
⑤os.path.exists()
检测指定路径是否存在,可以是文件夹或者文件
>>>os.path.exists('C:\\windows')
True
⑥os.path.isdir()
检测指定文件是否存在
⑦os.path.isfile()
检测指定文件夹是否存在
2、os.getcwd()
获得当前工作目录的字符串
>>>os.getcwd()
'C:\\Windows'
3、os.chdir()
改变当前工作目录
>>>os.chdir('C:\\')
'C:\\'
若当前文件夹不存在,则会报错,而不会新建一个目录
4、os.makedirs()
创建新文件夹
os.makedirs('C:\\xxx\\xx\\x')
若不存在xxx或者xx,则自动创建
5、os.listdir()
列出指定目录下包含的文件
>>>os.path.listdir('C:\\windows')
['addins','py.exe'....]
6、open()
打开一个文件,此打开应该说是和平常操作的‘选定’一个概念,而非‘双击打开’,第二个参数可以指定打开的模式,是以‘a’添加模式,或者‘w’写入模式等等,模式的应用会在write()方法中用到
>>>testfile = open('C:\\xxx.txt','w')
7、read()
读取文件内容
>>>testfile.read()
'lskajdkl'
8、write()
将内容写入文件
>>>testfile.write('hello')
'hello' #因为打开使用的是写入模式,所以原内容被替换掉
此处用到shutil模块,对文件进行复制、移动等功能。
9、shutil.copy(a,b)
将路径a的单一文件复制到b处,b若为文件名则直接复制并重命名,若为文件夹则只复制。
>>>shutile.copy('C:\\xxx.txt','D:\\asd\\xxx.txt')
'D:\\xxx.txt'
PS:若b路径不存在则会报错。
若b路径写成’D:\asd’,则会将文件复制到D盘根目录并重命名为asd
若想复制整个文件夹,则使用shutil.copytree()
10、shutil.move(a,b)
移动文件用法与9类似。若b路径下已存在同名文件,则会被覆盖。
11、shutil.retree()、send2trash()、os.unlink()和os.rmdir()
shutil.rmtree()将删除路径处的文件夹,及包含的子文件和文件夹
os.unlink()将删除路径处的文件
os.rmdir()将删除路径处的文件夹,但是文件夹必须为空,否则会报错。
注:以上该删除都是永久删除,而不是移到回收站
send2trash()移入回收站,且不释放磁盘空间
12、os.walk()
遍历目录树,达到操作整个文件夹及其子文件夹等目的
for folderName, subfolders, filenames in os.walk('D:\\asd'):
print('当前文件夹是'+ folderName)
for subfolder in subfolders:
print('子文件夹:'+ subfolder)
for filename in filenames:
print('子文件:' + filename)
这里要用到zipfile模块,可以对文件进行压缩打包等操作
13、zipfile.write()
创建压缩ZIP文件,且必须以‘w’模式打开压缩对象。
>>>xxx = zipfile.ZipFile('D:\\asd.zip','w')
>>>xxx.write('D:\\asd\\asd.txt',compress_type=zipfile.ZIP_DEFLATED) #第二个参数为压缩算法,它对各种类型的数据都很有效
>>>xxx.close()
14、extractall()
解压缩文件
15、zipfile.ZipFile()
读取ZIP文件的内容
>>>xxx = zipfile.ZipFile('asd.zip')
>>>xxx.namelist()
['asd/asd.txt','asd/asd/']
>>>asdInfo = xxx.getinfo('asd/asd.txt') #获取zip内指定文件的信息
>>>asdInfo.file_size #获取asd.txt未压缩时的大小
0
>>>asdInfo.compress_size #获取压缩后的大小
0