Python文件相关操作和方法汇总大全

目录
  • os.path
  • 文件
    • 文件读写
    • 文件删除
    • 文件复制移动
  • 目录
    • 创建目录
    • 删除目录
    • 复制目录
    • 枚举目录
    • 遍历(游走)目录
  • 文件名模式匹配
  • fnmatch
  • glob
  • 临时文件与目录

前言:

Python中有多个内置模块来操作文件与目录(os、os.path、shutil、pathlib等等)。

os.path

os.path模块主要用于获取文件的属性,包含以下几种常用方法:

路径操作:

print(os.path.splitext('.info'))	# ('.info', '')
print(os.path.splitext('test.txt'))	# ('test', '.txt')
print(os.path.splitext(r'c:\tmp\test.txt'))	# ('c:\\tmp\\test', '.txt')

属性操作:

方法 说明
getatime(path) 返回最近访问时间(浮点型秒数)
getmtime(path) 返回最近文件修改时间
getctime(path) 返回文件创建时间
getsize(path) 返回文件大小,如果文件不存在就返回错误

文件类型判断:

方法 说明
isfile(path) 判断路径是否为文件
isdir(path) 判断路径是否为目录
islink(path) 判断路径是否为链接
ismount(path) 判断路径是否为挂载点

文件

文件读写

Python中读写文件非常简单,只需通过open函数以合适的方式打开,然后即可操作。

with open('data.txt', 'r', encoding='utf-8') as f:
    data = f.read()
    print('contents: {}'.format(data))

open()用于打开一个文件,并返回文件对象(打开失败会抛出 OSError异常);文件对象不再使用时,一定要关闭(可用with语句保证自动关闭)。

open(file, mode='r', buffering=-1, encoding=None, errors=None, newline=None, closefd=True, opener=None)

参数说明:

  • file: 文件路径(相对或者绝对路径)或文件句柄(interger)。
  • mode: 文件打开模式(默认是r)。
  • buffering: 设置缓冲(0:关闭缓冲;1:只对文本文件有效,设定行缓冲;其他:设定缓冲的字节数)。
  • encoding: 设置编解码模式(只对文本模式有效,如’utf-8’)。
  • errors: 设定编解码的报错级别:
    • strict:默认,编解码出错时,抛出ValueError异常;
    • ignore:忽略编解码错误(可能会丢失数据);
    • replace:使用替换标识(如’?')替代无效数据;
    • surrogateescape:使用私有区编码(U+DC80 to U+DCFF)来替换错误字节;在处理未知编码文件时有效;
    • xmlcharrefreplace:写文件有效;错误字节被替换为XML字符(&#nnn;);
    • backslashreplace:使用Python’s backslashed escape sequences替换错误字节;
    • namereplace: 写文件有效;错误字节被替换为\N{...}
  • newline: 文本文件有效,如何处理换行符
  • closefd: 使用文件句柄时,是否关闭;使用文件路径时,必须为True;

打开模式Mode(t:文本;b:二进制):

文件对象的操作函数:

文件删除

删除文件可以:

  • os.remove()/os.unlink()
  • pathlib.Path.unlink()如果传递的不是文件,则会抛出OSError异常。

文件复制移动

复制文件:

  • shutil.copy(src, dst):把文件src复制到dst中指定的位置(若dst是文件,则该文件的内容将替换为src的内容;若dst是目录,则src将被复制到该目录中);
  • shutil.copy2():会保留文件的详细信息;

移动文件:

  • os.rename(src, dst):重命名文件;
  • shutil.move(src,dst):将文件移动到指定的位置。

目录

创建目录

有多种创建目录的方法:

方法 描述
os.mkdir() 创建单个子目录
os.makedirs() 创建多次目录,包括中间目录
Pathlib.Path.mkdir() 创建单个或多个目录

os.makedirs(name, mode=0o777, exist_ok=False)
若目录已存在,则抛出FileExistsError异常;
传递exist_ok=True,则目录存在时,不报错。

删除目录

有以下删除目录的函数:

函数 描述
os.rmdir() 删除一个空目录
pathlib.Path.rmdir() 删除一个空目录
shutil.rmtree() 删除完整的目录树,可用于删除非空目录

rmdir在目录不为空,则引发OSError异常。

复制目录

  • shutil.copytree()复制整个目录及其子文件、目录。
  • shutil.move(src,dst):将文件或目录移动到指定的位置。
  • os.rename(src, dst):重命名文件或目录;
    • Windows下,若dst存在则抛出FileExistsError异常;
    • Unix下,若src与dst不同时为文件或目录会抛出IsADirectoryError/NotADirectoryError异常;重命名目录时,若dst非空,则抛出OSError异常。 枚举目录

枚举目录

列表,可通过:

  • os.scandir():推荐方法;返回一个包含DirEntry迭代器;
  • pathlib.Path()对象的iterdir()方法:返回包含目录对象的迭代器;
  • os.listdir():遗留方法;返回一个包含子文件(夹)名的列表;
with os.scandir('/tmp') as entries:
    for en in entries:
        if en.is_file():
            print(en.name)

DirEntry属性与方法:

  • name:文件名
  • path:完整路径名
  • is_dir():是文件夹,返回
  • True;is_file():是文件,返回
  • True;is_symlink():是symbolic link,返回True;
  • stat():返回文件属性信息stat_result

遍历(游走)目录

os.walk()用于通过在目录树中游走输出目录中的文件名:
os.walk(top[, topdown=True[, onerror=None[, followlinks=False]]])

  • top:要开始遍历的顶层目录;
  • topdown:True,优先遍历top目录;False,优先遍历子目录;
  • onerror:当walk出错时,调用的callable函数;
  • followlinks:是否遍历软连接;返回为一个三元组(root,dirs,files):
  • root:当前正在遍历的这个文件夹(路径)
  • dirs:当前目录下所有目录名列表;
  • files:当前目录下所有文件名列表;
for root, dirs, files in os.walk(r"D:\temp"):
    print(root, files)

# D:\temp ['add.log', 'out.yml']
# D:\temp\picture ['1.jpeg']
# D:\temp\result\log ['1.log', '2.log']

文件名模式匹配

获取目录列表后,要搜索和特定的模式匹配的文件:

fnmatch

nmatch模块主要用于文件名称的匹配,比简单的字符串匹配更强大,但比正则表达式稍弱。

fnmatch支持使用如下几个通配符:

  • *:可匹配0或多个任意字符。
  • ?:可匹配一个任意字符。
  • [字符序列]:可匹配字符序列中的任意字符;支持中画线表示法,如 [a-c]表示a、b和c字符中任意一个。
  • [!字符序列]:可匹配不在字符序列中的任意字符。
for name in os.listdir('/tmp'):
    if fnmatch.fnmatch(name, 'log-*.txt'):
        print(name)

glob

glob模块中的glob()返回所有匹配的文件路径列表;iglob()与glob基本相同,只是返回的是迭代器(非列表)。
glob.glob(pathname, *, recursive=False)

参数说明:

  • pathname:是要匹配的路径pattern,可支持通配符* ? []
  • recursive:若为True,则pattern中的**会匹配零或多层目录及子目录。

如获取当前目录及其子目录下的所有py文件:

# files = glob.iglob(r"D:\temp\**\*.log", recursive=True)
files = glob.iglob(r"**\*.py", recursive=True)
for f in files:
    print(f)

## 返回文件中包含匹配的路径;
# log的返回为:
    # D:\temp\add.log
    # D:\temp\result\result.log
    # D:\temp\result\log\test2022.log
# py的返回为
    # main.py
    # files\file_handle.py

临时文件与目录

tempfile模块用于创建临时文件和目录(程序停止运行后会自动删除这些临时文件),创建位置依次为:

  • Windows下:C:\TEMPC:\TMP,当前目录;
  • 其他系统:/tmp/var/tmp/usr/tmp,当前目录;
with tempfile.TemporaryFile('w+t') as fp:
   fp.write('Hello world!')
   fp.seek(0)
   fp.read()
# 此处,文件已被删除

tmp = ''
with tempfile.TemporaryDirectory() as tmpdir:
    print('Created temporary directory ', tmpdir)
    tmp = tmpdir
    print(os.path.exists(tmpdir))
# 此处,目录已被删除

到此这篇关于Python文件相关操作和方法汇总大全的文章就介绍到这了,更多相关Python文件操作内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python操作csv格式文件之csv.DictReader()方法

    目录 简单使用csv.DictReader()方法 使用csv.DictReader()之fieldnames参数 使用csv.DictReader()之restkey参数 使用csv.DictReader()之restval参数 简单使用csv.DictReader()方法 示例代码1: import csv f = open('sample','r',encoding='utf8') reader = csv.DictReader(f) print(reader) # <csv.DictRe

  • python打包多类型文件的操作方法

    环境win10, python3.7,pyinstaller3.6 一 下载pyinstaller (1)cmd中pip install pyinstaller (2)pycharm中file-settings-project Interpreter----右上角'+'----搜索puinstaller----install package 成功即可! 二 主程序打包 打开cmd,cd到程序文件夹位置 由于文件夹中有多个子文件夹,包含多个程序,找到主程序的位置, 使用命令行:pyinstalle

  • Python对PDF文件的常用操作方法详解

    目录 工具 从PDF中提取文本 旋转和叠加页面 加密PDF文件 创建PDF文件 补充 工具 python3.7 Pycharm PDF PyPDF2 reportlab 从PDF中提取文本 PyPDF2没有办法从PDF文档中提取图像.图表或其他媒体,但它可以提取文本,并将其返回为Python字符串. import PyPDF2 reader = PyPDF2.PdfFileReader('test.pdf') page = reader.getPage(0) print(page.extract

  • 详解Python读取和写入操作CSV文件的方法

    目录 什么是 CSV 文件? 内置 CSV 库解析 CSV 文件 读取 CSV 文件csv 将 CSV 文件读入字典csv 可选的 Python CSV reader参数 使用 csv 写入文件 从字典中写入 CSV 文件csv 使用 pandas 库解析 CSV 文件 pandas 读取 CSV 文件 pandas 写入 CSV 文件 最流行的数据交换格式之一是 CSV 格式.是需要通过键盘和控制台以外的方式将信息输入和输出的程序,通过文本文件交换信息是在程序之间共享信息的常用方法. 这里带和

  • Python文件操作的方法

    目录 1.文件的概念 1.1文件的概念和作用 1.2文件的存储方式 2.文件的基本操作 2.1操作文件的套路 2.2操作文件的函数/方法 2.3read方法--读取文件 2.4打开文件的方式 2.5按行读取文件内容 2.6文件读写案例--复制文件 小文件复制 大文件复制 2.7文件读写中的函数 3.文件/目录的常用管理操作 4.文本文件的编码方式 5.拓展:eval函数 目标: 文件的概念 文件的基本操作 文件/文件夹的常用操作 文本文件的编码方式 1.文件的概念 1.1文件的概念和作用 计算机

  • python文件路径操作方法总结

    在python中,文件使用十分频繁,本文将向大家介绍python文件路径的操作:得到指定文件路径.得到当前文件名.判断文件路径是否存在.获得指定文件夹下所有文件.获得文件后缀.拼接路径和文件名. 1.得到指定文件路径:os.path.dirname(带路径文件名) 查找处理文件要调用os库,和openpyxl一样,先用import 导入. import os file = r'e:\python\删除最小值.xlsx' pwd = os.path.dirname(file) print(pwd)

  • Python操作CSV格式文件的方法大全

    目录 (一)CSV格式文件 (二)CSV库操作csv格式文本 (三)pandas库操作CSV文件 总结 (一)CSV格式文件 1.说明 CSV是一种以逗号分隔数值的文件类型,在数据库或电子表格中,常见的导入导出文件格式就是CSV格式,CSV格式存储数据通常以纯文本的方式存数数据表. (二)CSV库操作csv格式文本 操作一下表格数据: 1.读取表头的2中方式 #方式一 import csv with open("D:\\test.csv") as f: reader = csv.rea

  • 通过python-pptx模块操作ppt文件的方法

    ppt通过其精美的可视化技巧以及良好的演示效果,成为了职场人士的必备技能.ppt的设计是一门大学问,无论是设计技巧,还是操作方法,都衍生出了专门的课程. 本文主要介绍python操作ppt的技巧,编程的优势在于处理速度,对于高大上的ppt设计,还是需要"以人为本", 所以该模块的使用场景主要是ppt基本元素的提取和添加,适合大量内容的转化,比如word转ppt, 减少大量繁琐的人工操作,尽管提供了一些基本的样式设计,但是并不能满足日常办公对ppt美观性的要求. 在该模块中,将ppt拆分

  • Python文件相关操作和方法汇总大全

    目录 os.path 文件 文件读写 文件删除 文件复制移动 目录 创建目录 删除目录 复制目录 枚举目录 遍历(游走)目录 文件名模式匹配 fnmatch glob 临时文件与目录 前言: Python中有多个内置模块来操作文件与目录(os.os.path.shutil.pathlib等等). os.path os.path模块主要用于获取文件的属性,包含以下几种常用方法: 路径操作: print(os.path.splitext('.info')) # ('.info', '') print

  • python 下载文件的几种方法汇总

    前言 使用脚本进行下载的需求很常见,可以是常规文件.web页面.Amazon S3和其他资源.Python 提供了很多模块从 web 下载文件.下面介绍 一.使用 requests requests 模块是模仿网页请求的形式从一个URL下载文件 示例代码: import requests url = 'xxxxxxxx' # 目标下载链接 r = requests.get(url) # 发送请求 # 保存 with open ('r.txt', 'rb') as f: f.write(r.con

  • Python OpenCV视频文件相关操作教程

    目录 一.从文件中读取视频并播放 1.创建读取视频的对象 2.获取视频某些属性 3.修改视频属性信息 4.判断图像是否读取成功 5.获取视频的一帧图像 6.释放图像 二.视频文件的保存 1.在OpenCV中保存视频使用的是VedioWriter对象,创建视频写入对象 2.设置视频的编解码器 3.利用cap.read()获取视频中的每一帧图像,使用out.write()将某一帧图像写入视频中 4.使用cap.release()和out.release()释放资源 三.视频文件目标追踪 1.mean

  • python文件读写操作与linux shell变量命令交互执行的方法

    本文实例讲述了python文件读写操作与linux shell变量命令交互执行的方法.分享给大家供大家参考.具体如下: python对文件的读写还是挺方便的,与linux shell的交互变量需要转换一下才能用,这比较头疼. 代码如下: 复制代码 代码如下: #coding=utf-8 #!/usr/bin/python import os import time #python执行linux命令 os.system(':>./aa.py') #人机交互输入 S = raw_input("

  • python打开文件并获取文件相关属性的方法

    本文实例讲述了python打开文件并获取文件相关属性的方法.分享给大家供大家参考.具体分析如下: 下面的代码通过open函数打开文件,并输出文件名.打开状态.打开模式等属性 #!/usr/bin/python # Open a file fo = open("foo.txt", "wb") print "Name of the file: ", fo.name print "Closed or not : ", fo.clos

  • Python实现MySQL操作的方法小结【安装,连接,增删改查等】

    本文实例讲述了Python实现MySQL操作的方法.分享给大家供大家参考,具体如下: 1. 安装MySQLdb.从网站下载Mysql for python 的package 注意有32位和64位之分. 2. 安装完成之后从Python IDLE 导入MySQLdb >>>import MySQLdb 3. 新建一个数据库连接: >>>conn =MySQLdb.connect(host = '127.0.0.1',user= 'root',passwd='123456'

  • Python文件常见操作实例分析【读写、遍历】

    本文实例讲述了Python文件常见操作.分享给大家供大家参考,具体如下: 1.文件是什么? 文件是存储在外部介质上的数据或信息集合,程序中源程序.数据中保存的数据.图像中的像素数据等等: 文件是有序的数据序列: 2.编码: 信息从一种形式转换为另一种形式的过程:ascII码.Unicode.utf-8等等: 二进制文件ascII码:照片.音乐.视频.计算机程序... 3.文件的基本操作 1)打开文件获取文件对象 建立磁盘上的文件与源程序中的对象相关联,程序上叫打开文件,一旦文件被打开,文件的内容

  • Python计时相关操作详解【time,datetime】

    本文实例讲述了Python计时相关操作.分享给大家供大家参考,具体如下: 内容目录: 1. 时间戳 2. 当前时间 3. 时间差 4. python中时间日期格式化符号 5. 例子 一.时间戳 时间戳是自 1970 年 1 月 1 日(08:00:00 GMT)至当前时间的总秒数.它也被称为 Unix 时间戳(Unix Timestamp),它在unix.c的世界里随处可见:常见形态是浮点数,小数点后面是毫秒.两个时间戳相减就是时间间隔(单位:秒). 例: import time time1 =

  • python日期相关操作实例小结

    本文实例讲述了python日期相关操作.分享给大家供大家参考,具体如下: 用 Python 做项目时,经常会遇到与日期转换相关,日期计算相关的功能,动不动就要去查python手册,感觉麻烦,因此把自己常用的一些东西,总结了一下,总体说来到目前为止遇到如下一些需求: 1. 用python 把datetime转成字符串 2. 用python 把字符串转成datetime 3. 用python 把字符串转成时间戳形式 4. 用python 把时间戳转成字符串形式 5. 用python 把把dateti

  • python 发送邮件的四种方法汇总

    这里针对smtplib做了一系列封装,可以完成以下四种场景: 发送纯文本的邮件 发送html页面的邮件 发送带附件文件的邮件 发送能展示图片的邮件 以上四种场景,已经做好了二次封装,经测试OK,使用时直接传入对应参数即可,直接上代码 import smtplib from email.mime.text import MIMEText from email.mime.image import MIMEImage from email.mime.application import MIMEApp

随机推荐