前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python之文件操作大全

Python之文件操作大全

作者头像
全栈程序员站长
发布2022-08-23 18:40:08
4310
发布2022-08-23 18:40:08
举报

大家好,又见面了,我是你们的朋友全栈君。

在日常工作或生活中,总避免不了需要操作文件或文件夹,比如希望找出电脑中所有临时文件并清除,或者找到指定文件夹内所有图片文件并进行重新命名等等,如果能通过Python脚本的方式解决,会大大提升相关操作效率,本文即总结使用Python进行常见操作相关知识点,方便用到的人随时查阅,不用再每次使用都要花费时间检索或查阅文档。本文主要使用os、shutil、pathlib三个包。

一、文件操作

1.1 文件常规操作

操作

代码

说明/示例

新建文件

os.mknod(dir_str)

传入需创建文件的路径,但是需要修改权限才行

os.system(‘ touch test.txt’)

使用命令行创建,简单方便

移动文件

shutil.move(src_str,dst_str)

传入源路径和目标路径,可移动文件及文件夹,移动文件夹时是递归移动,返回相较于工作目录的相对最终路径

复制文件

shutil.copyfile(src_str,dst_str)

传入源文件和需复制到路径,均需是文件,返回相较于工作目录的相对最终路径

shutil.copy(src_str,dst_str)

传入源文件和需复制到路径,dst如果是文件则复制+重命名,如果是目录,则直接复制,但均不复制文件元信息

shutil.copy2(src_str,dst_str)

相较于copy,会将文件元信息也复制,包括创建、修改时间等

重命名

os.rename(old_str,new_str)

对文件或文件夹重命名

删除文件

os.remove(file_str)

删除指定文件,可以传入相较于工作目录的相对路径

1.2 文件读写

文件读写建议使用Python的标准file操作,具体本文不作展开

代码语言:javascript
复制
with open(filename_str,mode_str) as f:
    f.readline()
    f.write(content)

1.3 文件相关属性访问

操作

代码

说明/示例

获取文件或文件夹属性

os.stat(dir_str)

获取文件或文件夹相关属性 可返回文件的模式、所属用户ID、大小、上次访问时间、最后修改时间、创建时间等信息 具体见: Python os.stat() 方法 | 菜鸟教程

二、文件夹操作

2.1 文件夹常规操作

操作

代码

说明/示例

新建文件夹

os.mkdir(dir_str)

创建单个文件夹,如果文件夹已存在会报错

os.mkdirs(dir_str)

递归创建文件夹,即可一次性创建多层文件夹

from pathlib import Path p=Path(dir_str) p.mkdir(exist_ok=True)

使用pathlib,可以创建单个或递归创建文件夹,且如果存在也可忽略报错

移动文件夹

shutil.move(src_str,dst_str)

可移动文件或文件夹

复制文件夹

shutil.copytree(src_str,dst_str)

递归的将指定文件夹复制到目标文件夹内,一般用作备份文件夹

删除文件夹

os.rmdir(dir_str)

删除指定文件夹,只能删除单层文件夹,且不为空

os.removedirs(dir_str)

递归删除指定文件夹,但只会删除非空文件夹

from pathlib import Path p=Path(dir_str) p.rmdir()

与os.rmdir作用相同

shutil.rmtree(dir_str)

递归删除指定文件夹及子文件夹,不为空也行,相对比较危险

2.2 遍历文件夹

操作

代码

说明/示例

单层遍历

os.listdir(dir_str)

返回列表,列表内为该文件夹内的所有文件及文件夹名称

os.scandir(dir_str)

返回对指定文件单层遍历的迭代器,可遍历该迭代器,可获取文件或文件夹名称、属性信息

递归遍历

os.walk(dir_str)

递归遍历指定文件夹,包括子文件夹

代码语言:javascript
复制
import os
dir_str='~/downloads/'

#使用listdir
dir_list=listdir(dir_str)
for file in dir_list:
    if os.path.isfile(os.path.join(os.getcwd(),file):
        print('是一个文件')


#使用scandir
for file in os.scandir(dir_str):
    print(file.name) #打印文件名称
    print(file.stat) #打印文件属性
代码语言:javascript
复制
#使用os.walk()递归遍历
#walk函数会返回当前遍历文件夹根目录,该目录下所有文件夹组成的列表以及该目录下所有文件组成的列表
dir_str='~/downloads/'
dir_iter=os.walk(dir_str)

for root_dir,dirs,files in dir_iter:
    for file in files:
        print(file)

2.3 文件夹相关属性访问

见1.3

三、其他相关操作

3.1 工作目录操作

操作

代码

说明/示例

查询当前工作目录

os.getcwd()

返回当前的工作目录,即当前执行命令时所在工作目录

修改当前工作目录

os.chdir(dir_str)

修改当前工作目录,只是临时修改

3.2 文件&文件夹其他操作

操作

代码

说明/示例

压缩文件/文件夹

shutil.make_archive(file_str,format,src_dir)

将src_dir按照format指定的格式压缩为file_str文件

解压压缩文件

shutil.unpack_archive(filename, extract_dir=None, format=None)

将filename解压到extract_dir

变更权限

os.chmod(dir_str,mode_int) os.chmod(‘aa.txt’,777)

将dir_str的权限模式修改为mode_int

代码语言:javascript
复制
import shutil
shutil.make_archive('aaa','zip','/users/aaa/downloads/常用脚本')
#以上会将常用脚本文件夹内所有内容压缩为aaa.zip,并存到当前工作目录下
#如果同时希望指定压缩文件的存储位置,则
shutil.make_archive('/users/aaa/test/aaa.zip','zip','/users/aaa/downloads/常用脚本')
代码语言:javascript
复制
import shutil
shutil.unpack_archive('aaa.zip','/users/yanweichao/downloads/bbb')
#或想当前文件内的aaa.zip文件解压到bbb文件夹内,如果bbb文件夹不存在,会自动创建

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/139143.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年5月7,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、文件操作
    • 1.1 文件常规操作
      • 1.2 文件读写
        • 1.3 文件相关属性访问
        • 二、文件夹操作
          • 2.1 文件夹常规操作
            • 2.2 遍历文件夹
              • 2.3 文件夹相关属性访问
              • 三、其他相关操作
                • 3.1 工作目录操作
                  • 3.2 文件&文件夹其他操作
                  领券
                  问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档