返回 导航

Python

hangge.com

Python - 文件读写操作详解4(使用os模块操作文件、文件夹,执行命令)

作者:hangge | 2022-04-22 08:30
    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)运行结果如下:
评论

全部评论(0)

回到顶部