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

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

服务器之家 - 脚本之家 - Python - Python实现文件及文件夹操作大全

Python实现文件及文件夹操作大全

2022-11-07 11:21一秋闲谈 Python

在日常工作或生活中,总避免不了需要操作文件或文件夹,本文主要介绍了Python实现文件及文件夹操作大全,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起

在日常工作或生活中,总避免不了需要操作文件或文件夹,比如希望找出电脑中所有临时文件并清除,或者找到指定文件夹内所有图片文件并进行重新命名等等,如果能通过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操作,具体本文不作展开

?
1
2
3
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) 递归遍历指定文件夹,包括子文件夹
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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) #打印文件属性
?
1
2
3
4
5
6
7
8
#使用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
?
1
2
3
4
5
import shutil
shutil.make_archive('aaa','zip','/users/aaa/downloads/常用脚本')
#以上会将常用脚本文件夹内所有内容压缩为aaa.zip,并存到当前工作目录下
#如果同时希望指定压缩文件的存储位置,则
shutil.make_archive('/users/aaa/test/aaa.zip','zip','/users/aaa/downloads/常用脚本')
?
1
2
3
import shutil
shutil.unpack_archive('aaa.zip','/users/yanweichao/downloads/bbb')
#或想当前文件内的aaa.zip文件解压到bbb文件夹内,如果bbb文件夹不存在,会自动创建

 到此这篇关于Python实现文件及文件夹操作大全的文章就介绍到这了,更多相关Python 文件及文件夹操作内容请搜索服务器之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持服务器之家!

原文链接:https://blog.csdn.net/yifengchaoran/article/details/123591190

延伸 · 阅读

精彩推荐
  • Python如何利用Python分析出微信朋友男女统计图

    如何利用Python分析出微信朋友男女统计图

    这篇文章主要给大家介绍了关于如何利用Python分析出微信朋友男女统计图的相关资料,文中通过示例代码介绍的非常详细,对大家的学习或工作具有一定的...

    人生苦短丨我爱python7902021-05-22
  • Pythonpython re模块的高级用法详解

    python re模块的高级用法详解

    这篇文章较详细的给大家介绍了python re模块的高级用法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友参考下吧...

    arvin20166666252021-03-01
  • Pythonpython批量查询、汉字去重处理CSV文件

    python批量查询、汉字去重处理CSV文件

    这篇文章主要为大家详细介绍了python批量查询、汉字去重处理CSV文件,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    Lavender_sx7222021-02-27
  • Pythonpython类的继承链实例分析

    python类的继承链实例分析

    在本篇文章里小编给大家整理了一篇关于python类的继承链分析内容,有兴趣的朋友们可以学习下。...

    小妮浅浅3752021-10-19
  • Pythondjango js实现部分页面刷新的示例代码

    django js实现部分页面刷新的示例代码

    今天小编就为大家分享一篇django js实现部分页面刷新的示例代码,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧...

    云中不知人8502021-02-26
  • Pythonpython中分组函数groupby和分组运算函数agg的使用

    python中分组函数groupby和分组运算函数agg的使用

    本文主要介绍了python中分组函数groupby和分组运算函数agg的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    数据小白的进阶之路9092022-02-18
  • PythonPython 爬虫之超链接 url中含有中文出错及解决办法

    Python 爬虫之超链接 url中含有中文出错及解决办法

    这篇文章主要介绍了Python 爬虫之超链接 url中含有中文出错及解决办法的相关资料,出现UnicodeEncodeError: 'ascii' codec can't encode characters,的错误解决办法,需要...

    小旋锋6092020-11-30
  • Pythonpython实现小球弹跳效果

    python实现小球弹跳效果

    这篇文章主要为大家详细介绍了python实现小球弹跳效果,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下...

    毒_牙7322021-06-25