python文件操作完成_基于python的文件操作
0.前言
类似于数据库的基本操作增删改查,工作中会经常出现使用python完成文件操作。
本文作者实现文件操作相关函数。
1.增
1.1 写入内容给文本文件
def writeTextFile(filePath, fileContent, encoding='utf8'):
with open(filePath, 'w', encoding=encoding) as file:
file.write(fileContent)
1.2 复制文件夹
函数copyDirectory比shutil.copytree功能更强大,更不容易报错。
import os
import shutil
def copyDirectory(old_dirPath, new_dirPath):
if not os.path.isdir(old_dirPath):
print('旧文件夹路径错误,不存在此文件夹')
return
fileName_list = list(os.walk(old_dirPath))[0][2]
if not os.path.isdir(new_dirPath):
os.makedirs(new_dirPath)
for fileName in fileName_list:
old_filePath = os.path.join(old_dirPath, fileName)
new_filePath = os.path.join(new_dirPath, fileName)
shutil.copy(old_filePath, new_filePath)
dirName_list = list(os.walk(old_dirPath))[0][1]
for dirName in dirName_list:
old_subDirPath = os.path.join(old_dirPath, dirName)
new_subDirPath = os.path.join(new_dirPath, dirName)
copyDirectory(old_subDirPath, new_subDirPath)
2.删
2.1 删除文件夹
本文作者使用过shutil库的rmtree函数, 此函数经常报错OS Error,所以自己编写deleteDirectory函数。
import os
def deleteDirectory(dirPath):
for walk in os.walk(dirPath):
dirPath_2 = walk[0]
fileName_list = walk[2]
for fileName in fileName_list:
filePath = os.path.join(dirPath_2, fileName)
os.remove(filePath)
for walk in list(os.walk(dirPath))[::-1]:
dirPath_2 = walk[0]
dirName_list = walk[1]
for dirName in dirName_list:
dirPath_3 = os.path.join(dirPath_2, dirName)
os.rmdir(dirPath_3)
if os.path.isdir(dirPath):
os.rmdir(dirPath)
2.2 创建空文件夹
import os
def makeDirectoryEmpty(dirPath):
if os.path.isdir(dirPath):
for walk in os.walk(dirPath):
dirPath_2 = walk[0]
fileName_list = walk[2]
for fileName in fileName_list:
filePath = os.path.join(dirPath_2, fileName)
os.remove(filePath)
for walk in list(os.walk(dirPath))[::-1]:
dirPath_2 = walk[0]
dirName_list = walk[1]
for dirName in dirName_list:
dirPath_3 = os.path.join(dirPath_2, dirName)
os.rmdir(dirPath_3)
else:
os.makedirs(dirPath)
3.改
3.1 批量修改图片大小
import os
from PIL import Image
def getFilePathList(dirPath, partOfFileName=''):
allFileName_list = list(os.walk(dirPath))[0][2]
fileName_list = [k for k in allFileName_list if partOfFileName in k]
filePath_list = [os.path.join(dirPath, k) for k in fileName_list]
return filePath_list
def batchResizeImage(oldDirPath, newDirPath, height, width):
if not os.path.isdir(newDirPath):
os.mkdir(newDirPath)
jpgFilePath_list = getFilePathList(oldDirPath, '.jpg')
for jpgFilePath in jpgFilePath_list:
image = Image.open(jpgFilePath)
resized_image = image.resize((height, weight), Image.ANTIALIAS)
jpgFileName = os.path.split(jpgFilePath)[1]
saveFilePath = os.path.join(newDirPath, jpgFileName)
resized_image.save(saveFilePath)
oldDirPath = 'source_images'
newDirPath = 'train_images'
height = 640
width = 640
batchResizeImage(oldDirPath, newDirPath, height, width)
4.查
4.1 查询文件夹中的文件
import os
def getFileNameList(dirPath, partOfFileName=''):
allFileName_list = list(os.walk(dirPath))[0][2]
fileName_list = [k for k in allFileName_list if partOfFileName in k]
return fileName_list
def getFilePathList(dirPath, partOfFileName=''):
allFileName_list = list(os.walk(dirPath))[0][2]
fileName_list = [k for k in allFileName_list if partOfFileName in k]
filePath_list = [os.path.join(dirPath, k) for k in fileName_list]
return filePath_list
def getFilePathList_2(dirPath, partOfFileName=''):
filePath_list = []
for walk in os.walk(dirPath):
subDirPath = walk[0]
fileName_list = [k for k in walk[2] if partOfFileName in k]
filePath_list.extend([os.path.join(subDirPath, k) for k in fileName_list])
return filePath_list
4.2 读取文本文件
def readTextFile(filePath, encoding='utf8'):
with open(filePath, encoding=encoding) as file:
return file.read()
4.3 根据文件夹路径dirPath、文件中内容partOfFileContent、文件名partOfFileName得出文件路径
传入3个参数:文件夹路径dirPath、指定内容partOfFileContent、代码文件后缀名suffixOfFileName
import os
def searchFileContent(dirPath, partOfFileContent, partOfFileName=''):
dirPath = os.path.expanduser(dirPath)
for walk in os.walk(dirPath):
fileName_list = walk[2]
filePath_list = [os.path.join(walk[0], k) for k in fileName_list if partOfFileName in k]
for filePath in filePath_list:
try:
with open(filePath, encoding='gbk') as file:
fileContent = file.read()
except Exception as e:
try:
with open(filePath, encoding='utf8') as file:
fileContent = file.read()
except Exception as e:
pass
if partOfFileContent=='' or partOfFileContent in fileContent:
print(filePath)
python文件操作完成_基于python的文件操作相关推荐
- python如何爬取图片到指定文件夹论文_基于Python的图片爬虫程序设计
互联网中包含大量有价值的 数据,网络爬虫通过既定规则可 以自动地抓取互联网数据并下载 至本地存储.研究网络爬虫的工 作原理和基于 Python 网络信息爬 取技术模块功能,基于 Requests- B ...
- python查询银行汇款_基于Python实现一个简单的银行转账操作
前言 在进行一个应用系统的开发过程中,从上到下一般需要四个构件:客户端-业务逻辑层-数据访问层-数据库,其中数据访问层是一个底层.核心的技术.而且在实际开发中,数据库的操作也就是说数据访问层都是嵌套在 ...
- python电影推荐算法_基于Python的电影推荐算法
原标题:基于Python的电影推荐算法 第一步:收集和清洗数据 数据链接:https://grouplens.org/datasets/movielens/ 下载文件:ml-latest-small ...
- 用python做炒股软件-python程序源码_基于python的炒股软件
股票模拟交易系统设计与实现 不但能够进行界面的设计,还可以实现各个窗口的关联,通过WPF实现和其余窗口的关联,而且WPF中的类不但能够和其中一个窗口进行关联,还可以跟许多功能操作接口,WPF在对窗口对 ...
- autocad python二次开发_基于Python AutoCAD ActiveX 二次开发,pyautocad应用技术
AutoCAD应用程序开发系列 基于Python AutoCAD ActiveX 二次开发技术 主要库:pyautocad==0.2.0 内容#:基于Python AutoCAD ActiveX 二次 ...
- python数据接口设计_基于python的接口测试框架设计(一)连接数据库
基于python的接口测试框架设计(一)连接数据库 首先是连接数据库的操作,最好是单独写在一个模块里, 然后便于方便的调用,基于把connection连接放在__init__()方法里 然后分别定义D ...
- python人脸识别库_基于Python的face_recognition库实现人脸识别
Python Python开发 Python语言 基于Python的face_recognition库实现人脸识别 一.face_recognition库简介 face_recognition是Pyt ...
- python编程控制机器人_基于Python开发的微信图灵机器人
在过去的几个月中,由于在新生群中回答问题费时费力,同时又有许多重复而又有固定答案的回答,我受到一些知乎文章的启发,维护了一个基于itchat的群聊机器人.从刚开始接入图灵机器人时只会尬聊的机器人,之后 ...
- python多叉树遍历_基于Python的多叉树遍历算法
[ 综直厘翹 S 赛理 ) 信息记录材料 2019 年 5 月第 20 卷第 5 期 基于 Python 的多叉树遍历算法 钱雨波 , 王金祥 ( 指导老师 ) ( 延边大学 吉林 延边 1 3300 ...
- python开发语音录入_基于python实现语音录入识别代码实例
这篇文章主要介绍了如何通过python实现语音录入识别,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.介绍 1.第一步录音存入本地 2.调用百度 ...
最新文章
- mysql 类型转换 cast 将 float 转换为 decimal
- chrome浏览器插件开发经验(一)
- ecies算法c语言实现,Bouncy Castle算法库中ECIES算法调用示例
- ArcGIS教程:Iso 聚类非监督分类
- php 动态参数,PHP 动态配置运行时环境参数ini_xxx,extension_loaded
- 股票涨跌停的买卖问题
- SpringCloud 教程 | 第六篇: 分布式配置中心 (Spring Cloud Config)
- 【流媒体开发】6、ffplay命令
- vscode快速格式化代码
- 【机器学习】21个机器学习面试问答
- 西门子opc服务器注册,西门子OPC服务器怎么做
- 阿里笔试--智能对话简化版之query指令槽位识别
- Azure中配置网络安全组入站规则让外部网络访问VM中的网站
- app注册协议通用模版
- 感应开关垃圾桶小项目的完成及问题解决——基于STC89C52RC单片机
- git push 使用中遇到的Permission to xxx denied to xxx问题终极解决方案
- python中import文件夹下面py文件,报错
- python绘制单线图_如何绘制管道单线图
- 带你了解CSS开发中的10个不要
- 简历上的哪些内容才是 HR 眼中的干货?
热门文章
- linux 内核 内存管理 bootmem alloctor 申请内存
- python交换两个值原理_python交换两个变量的值方法
- ArcGIS教程:降雨量插值
- 漫谈Clustering:高斯混合模型(GMM)
- 比例化简 详解(C++)
- mysql 无法连接 native_php无法连接mysql8 mysql_native_password
- numpy array和python list_Python list与NumPy array 区分详解
- kettle linux下的目录怎么看_Linux系统各目录下指令解析
- python中变量pa和pa一样吗_仅限python中的pafy和vlc音频
- python123基本统计值计算_基本统计值计算