Python实现文件及文件夹操作大全
作者:一秋闲谈 发布时间:2021-05-22 09:35:21
标签: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操作,具体本文不作展开
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) | 递归遍历指定文件夹,包括子文件夹 |
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) #打印文件属性
#使用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 |
import shutil
shutil.make_archive('aaa','zip','/users/aaa/downloads/常用脚本')
#以上会将常用脚本文件夹内所有内容压缩为aaa.zip,并存到当前工作目录下
#如果同时希望指定压缩文件的存储位置,则
shutil.make_archive('/users/aaa/test/aaa.zip','zip','/users/aaa/downloads/常用脚本')
import shutil
shutil.unpack_archive('aaa.zip','/users/yanweichao/downloads/bbb')
#或想当前文件内的aaa.zip文件解压到bbb文件夹内,如果bbb文件夹不存在,会自动创建
来源:https://blog.csdn.net/yifengchaoran/article/details/123591190


猜你喜欢
- 一、什么是变量在读这篇文章前,我们需要搞懂到底是什么变量,其实一句话就能概括:变量是一个可以保存任何数据类型值的命名占位符。本篇文章将会介绍
- 最近刚接触了公司的服务器,使用的是Windows 2003 server + IIS 6.0 服务器,在使用无组件上传文件时产生这个错误时:
- 第一次写文章,也当作工作中遇到问题的一次分享。由于Vuex在浏览器刷新是会丢失数据,所以我在项目里使用了Vuex持久化存储的功能,我这边实现
- 本文实例讲述了Python基于回溯法子集树模板解决全排列问题。分享给大家供大家参考,具体如下:问题实现 'a', '
- 例如“I am a boy”,逆序排放后为“boy a am I”所有单词之间用一个空格隔开,语句中除了英文字母外,不再包含其他字符。lis
- 茎叶图from itertools import groupbynums2=[225, 232,232,245,235,245,270,22
- jquery的ajax请求方法:$.ajax({ &nbs
- 如何把[1, 5, 6, [2, 7, [3, [4, 5, 6]]]]变成[1, 5, 6, 2, 7, 3, 4, 5, 6]?思考:-
- Python中常用到的两种标准化输入方式:分别sys.stdin和input,两者使用方式大致相同,但是总的来说sys.stdin使用方式更
- 如下所示:import torchfrom torch.autograd import Variableimport matplotlib.
- 本文实例为大家分享了wxPython电子表格功能的具体代码,供大家参考,具体内容如下#!/usr/bin/env python#encodi
- 有别于JS跨域、IFRAME跨域等的常用处理办法,还可以利用P3P来实现跨域。P3P是什么P3P(Platform for Privacy
- 1、解决方法(1)忽视元组。缺少类别标签时,通常这样做(假设挖掘任务与分类有关),除非元组有多个属性缺失值,否则该方法不太有效。当个属性缺值
- SELECT * from table where username like '%陈哈哈%' and hobby like
- 本文实例讲述了Python双精度浮点数运算并分行显示操作。分享给大家供大家参考,具体如下:#coding=utf8def doubleTyp
- 本文实例讲述了Python3读取文件常用方法。分享给大家供大家参考。具体如下:''''' Creat
- 在讲爬取淘宝详情页数据之前,先来介绍一款 Chrome 插件:Toggle JavaScript (它可以选择让网页是否显示 js 动态加载
- 本文全部操作均在windows环境下安装 PythonPython是一种跨平台的计算机程序设计语言,它可以运行在Windows、Mac和各种
- 提高MySQL 查询效率的三个技巧小结MySQL由于它本身的小巧和操作的高效, 在数据库应用中越来越多的被采用.我在开发
- 调用函数:#!/usr/bin/env python3 # -*- coding: utf-8 -*- # 函数调用 >>>