Python - 文件读写操作详解4(使用os模块操作文件、文件夹,执行命令)
os 模块可以帮助我们直接对操作系统进行操作。比如我们可以使用该模块直接操作文件、目录,也可以直接调用操作系统的可执行文件、命令等等。下面通过样例进行演示。
五、os 模块使用详解
1,操作文件、文件夹
(1)下面是使用 os 模块实现对文件和目录的一些基本操作:
import os #导入os模块 os.chdir('/Volumes/BOOTCAMP/test/') #改变当前路径 print('获取当前路径:', os.getcwd()) #获取当前路径 os.mkdir('test1') #创建目录 os.rename('test1','test2') #重命名 os.rmdir('test2') #删除目录 #列出目录下的文件 print('\n/Volumes/BOOTCAMP/test/ 下有如下文件和文件夹:') dirs = os.listdir('/Volumes/BOOTCAMP/test/') # 输出所有文件和文件夹 for file in dirs: print (file) print('\n拼接路径:', os.path.join('/Volumes/BOOTCAMP/test/','a')) #拼接路径 print('分割路径:', os.path.split('/Volumes/BOOTCAMP/test/b')) #分割路径 print('分割文件名和扩展名:', os.path.splitext('/Volumes/BOOTCAMP/test/demo.txt')) #分割文件名和扩展名 print('获取绝对路径:', os.path.abspath('/Volumes/BOOTCAMP/test/demo.txt')) #获取绝对路径 print('获取路径:', os.path.dirname('/Volumes/BOOTCAMP/test/demo.txt')) #获取路径 print('获取文件名:', os.path.basename('/Volumes/BOOTCAMP/test/demo.txt')) #获取文件名 print('判断路径是否存在:', os.path.exists('/Volumes/BOOTCAMP/test/demo.txt')) #判断路径是否存在 print('判断路径是否为文件:', os.path.isfile('/Volumes/BOOTCAMP/test/demo.txt')) #判断路径是否为文件 print('判断路径是否为目录:', os.path.isdir('/Volumes/BOOTCAMP/test/demo.txt')) #判断路径是否为目录 print('\n文件大小(字节):', os.path.getsize('/Volumes/BOOTCAMP/test/demo.txt')) #获取文件大小 print('文件最后访问时间:', os.path.getatime('/Volumes/BOOTCAMP/test/demo.txt')) #获取文件最后访问时间 print('文件最后修改时间:', os.path.getmtime('/Volumes/BOOTCAMP/test/demo.txt')) #获取文件最后修改时间 print('文件最后创建时间:', os.path.getctime('/Volumes/BOOTCAMP/test/demo.txt')) #获取文件最后创建时间
(2)运行效果如下:

2,执行系统命令
(1)使用 os.system() 方法可以打开操作系统的相应 shell 并在其上执行命令。比如下面代码在 macOS 电脑上执行后将会打开系统自带的计算器:
import os #导入os模块 os.system('open /System/Applications/Calculator.app') #打开计算器
(2)运行效果如下:

附1:批量修改文件名
下面代码将指定目录下的所有 *.html 更名为 *.htm:
import os #导入os模块 path = '/Volumes/BOOTCAMP/test/' #将指定路径下的所有html文件都改为htm文件 for root,dirs,files in os.walk(path): for item in files: if item[-5:].upper() != '.HTML': continue filename = os.sep.join([root,item]) print(filename) file1 = filename[:-5]+'.htm' os.rename(filename, file1)
附2:搜索指定目录下文件
(1)下面代码在指定目录下搜索包含指定字符串的文件:
import os #导入os模块 #在指定目录下搜索包含指定字符串的文件方法 def findfile(start, name): result = [] for relpath, dirs, files in os.walk(start): #print 'relpath= %s, dirs=%s, files = %s' %(relpath, dirs, files) for filename in files: if name in filename: full_path = os.path.join(start, relpath, filename) result.append(os.path.normpath(os.path.abspath(full_path))) return result #搜索包含t的文件 files = findfile('/Volumes/BOOTCAMP/test/', 't') print(files)
(2)运行结果如下:
