脚本之家,脚本语言编程技术及教程分享平台!
分类导航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服务器之家 - 脚本之家 - Python - Python文件目录操作常用模块的使用详解

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

2022-07-29 16:57笨牛慢耕 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'。有时候给出的信息不够细。

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

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

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
# 获取路径和文件名等
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 判断是否文件或目录以及指定文件目录是否存在

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

1.4 删除一个文件或者目录

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

?
1
2
3
4
5
6
# 删除一个文件
os.remove()
# 删除一个文件
os.unlink()
# 删除一个空目录,如果不是空目录会报错
os.rmdir()

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

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

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

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

1.6 执行外部shell命令

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

2. shutil模块        

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

2.1 拷贝文件

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

?
1
shutil.copy($file_path, $dir_path)

2.2 移动或重命名文件

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

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

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

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

2.4 生成压缩文件

?
1
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 解压文件

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

filename是压缩文档的完整路径

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

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

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

原文链接:https://blog.csdn.net/chenxy_bwave/article/details/122011306

延伸 · 阅读

精彩推荐
  • PythonPython通用唯一标识符uuid模块使用案例

    Python通用唯一标识符uuid模块使用案例

    这篇文章主要介绍了Python通用唯一标识符uuid模块使用案例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友...

    Jimmyhe7292020-09-11
  • PythonPython搭建Spark分布式集群环境

    Python搭建Spark分布式集群环境

    这篇文章主要介绍了Spark分布式集群环境搭建基于Python版,Apache Spark 是一个新兴的大数据处理通用引擎,提供了分布式的内存抽象。100 倍本文而是使用三台...

    E-iceblue7132021-08-02
  • Python详解python 3.6 安装json 模块(simplejson)

    详解python 3.6 安装json 模块(simplejson)

    这篇文章主要介绍了python 3.6 安装json 模块(simplejson),文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下...

    在奋斗的大道9682021-06-11
  • Pythonpython实现地牢迷宫生成的完整步骤

    python实现地牢迷宫生成的完整步骤

    这篇文章主要给大家介绍了关于python实现地牢迷宫生成的相关资料,文中通过示例代码将实现的过程一步步介绍的非常详细,对大家学习或者工作具有一定的...

    揉揉漆7482022-01-12
  • PythonPython实现的十进制小数与二进制小数相互转换功能

    Python实现的十进制小数与二进制小数相互转换功能

    这篇文章主要介绍了Python实现的十进制小数与二进制小数相互转换功能,结合具体实例形式详细分析了二进制与十进制相互转换的原理及Python相关实现技巧...

    Inside_Zhang4092020-12-11
  • PythonPython3 完全平方数案例

    Python3 完全平方数案例

    这篇文章主要介绍了Python3 完全平方数的案例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    依汉南11222021-09-18
  • PythonPython实现的txt文件去重功能示例

    Python实现的txt文件去重功能示例

    这篇文章主要介绍了Python实现的txt文件去重功能,涉及Python针对txt文本文件的读写、字符串遍历、判断相关操作技巧,需要的朋友可以参考下...

    人饭子6982021-03-14
  • PythonPython网络编程之TCP套接字简单用法示例

    Python网络编程之TCP套接字简单用法示例

    这篇文章主要介绍了Python网络编程之TCP套接字简单用法,结合实例形式分析了TCP套接字的功能及客户端、服务器端具体实现方法,需要的朋友可以参考下...

    jiange_zh7292021-01-29