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

目录
  • 1. os模块
    • 1.1 获取系统信息
    • 1.2  工作目录与路径相关的操作
    • 1.3 判断是否文件或目录以及指定文件目录是否存在
    • 1.5 串连创建或者分离一个文件目录路径
    • 1.6 执行外部shell命令
  • 2. shutil模块
    • 2.1 拷贝文件
    • 2.2 移动或重命名文件
    • 2.3 拷贝文件夹/删除文件夹
    • 2.4 生成压缩文件
    • 2.5 解压文件

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文件目录操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • Python3.5内置模块之os模块、sys模块、shutil模块用法实例分析

    本文实例讲述了Python3.5内置模块之os模块.sys模块.shutil模块用法.分享给大家供大家参考,具体如下: 1.os模块:提供对操作系统进行调用的接口 #!/usr/bin/env python # -*- coding:utf-8 -*- # Author:ZhengzhengLiu import os print(os.getcwd()) #获取当前的操作目录,即当前Python脚本工作的目录路径 #os.chdir("F:\\PythonCode\\day5\\test&quo

  • 浅谈Python中os模块及shutil模块的常规操作

    如下所示: #os.listdir() 方法用于返回指定的文件夹包含的文件或文件夹的名字的列表.这个列表以字母顺序. 它不包括 '.' 和'..' 即使它在文件夹中. #只支持在 Unix, Windows 下使用 import os, sys # 打开文件 path=r'C:\Users\Administrator.SKY-20180518VHY\Desktop\rx\ore' dirs = os.listdir( path ) print(dirs) # 输出所有文件和文件夹 for fil

  • Python对文件和目录进行操作的方法(file对象/os/os.path/shutil 模块)

    使用Python过程中,经常需要对文件和目录进行操作.所有file类/os/os.path/shutil模块时每个Python程序员必须学习的. 下面通过两段code来对其进行学习. 1. 学习 file对象 2. 学习os/os.path/shutil模块 1.file对象学习: 项目中需要从文件中读取配置参数,python可以从Json,xml等文件中读取数据,然后转换成Python的内容数据结构. 下面以Json文件为例,实现从Json文件中获取配置参数. code运行环境:python2

  • 详解Python常用标准库之os模块与shutil模块

    目录 系统模块 常用方法 常用属性 文件操作 路径模块 文件复制移动模块(文件操作) copyfileobj -- 复制文件(内容) copyfile -- 复制文件(内容) copymode -- 复制文件(权限) copystat -- 复制文件(除了内容) copy & copy2 -- 复制文件 copytree -- 迭代复制文件夹中的所有 rmtree -- 迭代删除文件夹(即使文件夹中有文件) move -- 移动文件或文件夹 系统模块 import os 系统模块用于对系统进行操

  • Python中os和shutil模块实用方法集锦

    复制代码 代码如下: # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\'os.name 字符串指示你正在使用的平台.比如对于Windows,它是'nt',而对于Linux/Unix用户,它是 'posix'os.getcwd() 函数得到当前工作目录,即当前Python脚本工作的目录路径os.getenv() 获取一个环境变量,如果没有返回noneos.putenv(key, value) 设置一个环境变量值os.listdir(path) 返回指定目录

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

    目录 1. os模块 1.1 获取系统信息 1.2  工作目录与路径相关的操作 1.3 判断是否文件或目录以及指定文件目录是否存在 1.5 串连创建或者分离一个文件目录路径 1.6 执行外部shell命令 2. shutil模块 2.1 拷贝文件 2.2 移动或重命名文件 2.3 拷贝文件夹/删除文件夹 2.4 生成压缩文件 2.5 解压文件 Python中用于文件目录操作的常用模块有os, shutil,pathlib等. os就是“Operating System”的缩写,顾名思义,os模块

  • Python学习之sys模块使用教程详解

    sys模块 与 os包一样,也是对系统资源进行调用.功能同样也是非常丰富,接下来我们会对 sys模块的一些简单且常用的函数进行介绍,主要针对一些非功能性的函数与属性来认识一些不太常见的 Python 背后的事件. sys 中的常用方法 函数名 参数 介绍 举例 返回值 modules(属性) 无 将Python启动时加载的模块集合起来并返回一个列表 sys.modules 列表 path(属性) 无 返回当前Py的环境路径(当前py环境可以导入内置.第三方包与函数的所在路径) sys.path

  • Python自动操作Excel文件的方法详解

    目录 工具 读取Excel文件内容 写入Excel文件内容 Excel文件样式调整 设置表头的位置 设置单元格的宽高 总结 工具 python3.7 Pycharm Excel xlwt&xlrd 读取Excel文件内容 当前文件夹下有一个名为“股票数据.xlsx”的Excel文件,可以按照下列代码方式来操作它. import xlrd # 使用xlrd模块的open_workbook函数打开指定Excel文件并获得Book对象(工作簿) wb = xlrd.open_workbook('股票数

  • 表格梳理python内置数学模块math分析详解

    python内置数学模块math 提供了一些基础的计算功能,下列表达式默认 from math import * 默认输入输出均为一个数字.大部分函数都很直观,望文生义即可. 其他函数 isclose(a, b, *, rel_tol=1e-09, abs_tol=0.0) 若 a 和 b 的值比较接近则返回True,否则False. rel_tol 是相对容差,表示a, b之间允许的最大差值.例如,要设置5%的容差,rel_tol=0.05.rel_tol 必须大于0. abs_tol 是最小

  • Python利用Beautiful Soup模块搜索内容详解

    前言 我们将利用 Beautiful Soup 模块的搜索功能,根据标签名称.标签属性.文档文本和正则表达式来搜索. 搜索方法 Beautiful Soup 内建的搜索方法如下: find() find_all() find_parent() find_parents() find_next_sibling() find_next_siblings() find_previous_sibling() find_previous_siblings() find_previous() find_al

  • python通配符之glob模块的使用详解

    通配符是一些特殊符号,主要有星号(*)和问号(?),用来模糊搜索文件,"*"可以匹配任意个数个符号, "?"可以匹配单个字符. 当查找文件夹时,可以使用它来代替一个或多个真正字符:当不知道真正字符或者需要匹配符合一定条件的多个目标文件时,可以使用通配符代替一个或多个真正的字符. 英文 "globbing"意为统配,python在模块glob中定义了glob()函数,实现了对目录内容进行匹配的功能,glob.glob()函数接受通配模式作为输入,并

  • python中yaml配置文件模块的使用详解

    简述 和GNU一样,YAML是一个递归着说"不"的名字.不同的是,GNU对UNIX说不,YAML说不的对象是XML. YAML不是XML. 为什么不是XML呢?因为: YAML的可读性好. YAML和脚本语言的交互性好. YAML使用实现语言的数据类型. YAML有一个一致的信息模型. YAML易于实现. 上面5条也就是XML不足的地方.同时,YAML也有XML的下列优点: YAML可以基于流来处理: YAML表达能力强,扩展性好. 总之,YAML试图用一种比XML更敏捷的方式,来完成

  • Python select及selectors模块概念用法详解

    1. select模块 针对select,要先理解其他几个概念: 文件描述符: 文件描述符在形式上是一个非负整数.实际上,它是一个索引值,指向内核为每一个进程所维护的该进程打开文件的记录表.当程序打开一个现有文件或者创建一个新文件时,内核向进程返回一个文件描述符. 内核空间: Linux简化了分段机制,使得虚拟地址与线性地址总是一致,因此,Linux的虚拟地址空间也为0-4G.Linux内核将这4G字节的空间分为两部分.将最高的1G字节(从虚拟地址0xC0000000到0xFFFFFFFF),供

  • Python下的Mysql模块MySQLdb安装详解

    默认情况下,MySQLdb包是没有安装的,不信? 看到类似下面的代码你就信了. 复制代码 代码如下: -bash-3.2# /usr/local/python2.7.3/bin/python get_cnblogs_news.py Traceback (most recent call last):  File "get_cnblogs_news.py", line 9, in <module>    import MySQLdbImportError: No module

  • Python正则表达式re.compile()和re.findall()详解

    目录 前言 网页中的代码: 提取的方法: re.findall中参数re.S的意义: 参考: 总结 前言 在使用爬虫提取网页中的部分信息时,采用到了re.compile()与re.findall()两种方法,目的:把网页中的“某某城市土地规划表”截取并打印出来. 网页中的代码: <span class='tab-details'>某某城市土地规划表</span> 提取的方法: def parse_response(html): pattern = re.compile('class

随机推荐

其他