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

 更新时间:2022年07月29日 14:16:17   作者:笨牛慢耕  
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文件目录操作内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Pygame游戏开发之太空射击实战子弹与碰撞处理篇

    Pygame游戏开发之太空射击实战子弹与碰撞处理篇

    相信大多数8090后都玩过太空射击游戏,在过去游戏不多的年代太空射击自然属于经典好玩的一款了,今天我们来自己动手实现它,在编写学习中回顾过往展望未来,下面开始讲解子弹与碰撞处理,在本课中,我们将添加玩家与敌人之间的碰撞,以及添加供玩家射击的子弹
    2022-08-08
  • python实现批量图片格式转换

    python实现批量图片格式转换

    这篇文章主要为大家详细介绍了python实现批量图片格式转换的方法,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • 使用anaconda的pip安装第三方python包的操作步骤

    使用anaconda的pip安装第三方python包的操作步骤

    今天小编就为大家分享一篇使用anaconda的pip安装第三方python包的操作步骤,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • 用python基于appium模块开发一个自动收取能量的小助手

    用python基于appium模块开发一个自动收取能量的小助手

    大家都有了解过蚂蚁森林吧,本篇文章带给你自动收取蚂蚁森林能量的思路与方法,基于appium模块开发一个自动收取能量的小助手,本文给大家介绍的非常详细,对大家的学习或工作具有一定的价值
    2021-09-09
  • PyQt编程之如何在屏幕中央显示窗体的实例

    PyQt编程之如何在屏幕中央显示窗体的实例

    今天小编就为大家分享一篇PyQt编程之如何在屏幕中央显示窗体的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Python桌面文件清理脚本分享

    Python桌面文件清理脚本分享

    这篇文章主要介绍了Python桌面文件清理脚本,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • python搭建虚拟环境的步骤详解

    python搭建虚拟环境的步骤详解

    相信每位python都知道,进行不同的python项目开发,有的时候会遇到这样的情况:python 版本不一样,使用的软件包版本不一样。这种问题最佳的解决办法是为不同的项目搭建独立的 python 环境。下面来一起看看吧。
    2016-09-09
  • 详解python模块pychartdir安装及导入问题

    详解python模块pychartdir安装及导入问题

    这篇文章主要介绍了python模块pychartdir导入问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-10-10
  • 讲解Python中的递归函数

    讲解Python中的递归函数

    这篇文章主要介绍了讲解Python中的递归函数,递归是学一门编程语言必须掌握的重要特性,需要的朋友可以参考下
    2015-04-04
  • Python批处理更改文件名os.rename的方法

    Python批处理更改文件名os.rename的方法

    今天小编就为大家分享一篇Python批处理更改文件名os.rename的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-10-10

最新评论