python

关注公众号 jb51net

关闭
首页 > 脚本专栏 > python > Python文件目录操作

Python文件目录操作常用模块的使用详解

作者:笨牛慢耕

Python中用于文件目录操作的常用模块有os, shutil,pathlib等。os模块提供的就是各种 Python 程序与操作系统进行交互的接口。shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作

 Python中用于文件目录操作的常用模块有os, shutil,pathlib等.

os就是“Operating System”的缩写,顾名思义,os模块提供的就是各种 Python 程序与操作系统进行交互的接口。通过使用os模块,一方面可以方便地与操作系统进行交互,另一方面也可以提高代码的可移植性,方便代码跨操作系统平台使用。如果该模块中相关功能出错,会抛出OSError异常或其子类异常。

shutil可以简单地理解为sh + util,shell工具的意思。shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。

1. os模块

Python的os模块封装了常见的文件和目录操作。

通常来说,不建议用from os import *来导入os模块。os模块中有些函数与python内置函数重名,比如说open()。这种方式导入时,os.open就把python内置open()覆盖了。

如果是读写文件的话,建议使用内置函数open();如果是路径相关的操作,建议使用os的子模块os.path;如果要逐行读取多个文件,建议使用fileinput模块;要创建临时文件或路径,建议使用tempfile模块;要进行更高级的文件和路径操作则应当使用shutil模块。

使用os模块可以写出操作系统无关的代码。但是os也可以调用一些特定系统的扩展功能,但要切记一点:一旦这样做就会极大损害代码的可移植性。

1.1 获取系统信息

判断使用的平台:字符串指示你正在使用的平台。比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'。有时候给出的信息不够细。

# 获取平台名称. 注意这个不是函数,所以不需要带括号()
os.name
 
# 获取系统的核心数
os.cpu_count()
 
# 改变权限
os.chmod(path, mode)

1.2  工作目录与路径相关的操作

# 获取路径和文件名等
os.getcwd()            #函数得到当前工作目录,即当前Python脚本工作的目录路径
os.path.abspath($name) #当前目录下文件或文件夹的绝对路径
os.path.basename(path) #返回文件名
os.path.dirname(path)  #返回文件的上级路径
os.path.split()        #分离文件名和上级路径
os.path.join()         #合并文件名和指定路径
os.path.splitext()     #分离文件名与扩展名,返回的扩展名包括了'.'符号,默认只返回第一个'.后缀'和前缀。
 
# 改变工作目录到dirname
os.chdir(dirname)
 
# 该函数相当于linux命令“ls”,列举出指定目录中的内容。其返回值是一个列表。列表中的每一格元素表示一个子目录名,或者一个文件名
os.listdir(path) 
 
# 创建一个目录
os.mkdir(path)    
# 删除一个目录
os.rmdir(path)    
# 重命名
os.rename(src, dst) 
 
# 获取文件大小信息
os.path.getsize(name)   #获得文件大小,如果name是目录返回0L

1.3 判断是否文件或目录以及指定文件目录是否存在

#函数分别检验给出的路径是一个文件?
os.path.isfile()   
#函数分别检验给出的路径是一个目录?
os.path.isdir()    
#函数用来检验给出的路径是否真地存在
os.path.exists()   

1.4 删除一个文件或者目录

Ref: How to delete a file or folder in Python? - Stack Overflow

# 删除一个文件
os.remove()
# 删除一个文件
os.unlink() 
# 删除一个空目录,如果不是空目录会报错
os.rmdir()

BTW, 除了OS模块外,shutil和pathlib也提供了相应的函数。 

# 删除目录,包括其中的文件以及子目录,需要小心使用
shutil.rmtree()
# removes a file or symbolic link.
pathlib.Path.unlink() 
# removes an empty directory.
pathlib.Path.rmdir() 

1.5 串连创建或者分离一个文件目录路径

#os.path.join(datadir,file)
 
#与直接字符串连接不同的是,'D:/tmp'即可,不需要'D:/tmp/'
os.path.join('D:/tmp','tmp.txt')
 
 
# 返回路径的目录和文件名,即将目录和文件名分开,而不是一个整体。此处只是把前后两部分分开而已。就是找最后一个'/'。
os.path.split(path)

1.6 执行外部shell命令

os.system(cmd)      #执行外部shell命令。

2. shutil模块        

shutil可以简单地理解为sh + util,shell工具的意思。shutil模块是对os模块的补充,主要针对文件的拷贝、删除、移动、压缩和解压操作。

2.1 拷贝文件

shutil会自动识别拷贝的到底是文件还是文件夹, 如果存在同名的文件将会自动进行覆盖。

shutil.copy($file_path, $dir_path)

2.2 移动或重命名文件

如果路径下已有重名的文件,将报错!

shutil.move($file_path, $dir_path) # 移动到另外一个文件夹中
shutil.move($file_path, $new_file_path) # 重命名为新的绝对路径

2.3 拷贝文件夹/删除文件夹

shutil.copytree($file_path, $dir_path) # 拷贝所有文件到新的文件夹下,保持原有的文件结构。
shutil.rmtree($dir_path) # 删除此路径的文件夹

2.4 生成压缩文件

shutil.make_archive(base_name, 'gztar', root_dir, [base_dir)

base_name : 创建的目标文件名,包括路径,减去任何特定格式的扩展。

format : 压缩包格式。”zip”, “tar”, “bztar”或”gztar”中的一个。

root_dir : 需要打包的文件夹路径。打包完成时存储在上一级目录。

base_dir : 使用后会将base_dir作为路径,解压后有个有层级的文件夹,而仅非只有单独的打包内容。

2.5 解压文件

shutil.unpack_archive(filename[, extract_dir[, format]])

filename是压缩文档的完整路径

extract_dir是解压缩路径,默认为当前目录。

format是压缩格式。默认使用文件后缀名代码的压缩格式。”zip”, “tar”, “bztar”或”gztar”中的一个。

到此这篇关于Python文件目录操作常用模块的使用详解的文章就介绍到这了,更多相关Python文件目录操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

您可能感兴趣的文章:
阅读全文