python批量修改文件夾及其子文件夾下的文件內(nèi)容
前言:前幾天我看一位同學(xué)要修改很多文件中的數(shù)據(jù),該文件數(shù)據(jù)很規(guī)律,一行只有三個(gè)數(shù),需要將每行最后一個(gè)數(shù)字改為負(fù)數(shù),但文件有上千個(gè),分布在每個(gè)文件夾下面以及它的多級(jí)子文件夾下,看他用excel手動(dòng)改數(shù)據(jù)改的很痛苦,我突然想到用Python訪問(wèn)和操作文件,修改文件內(nèi)容都很方便,于是在對(duì)Python不熟悉的情況下花了大半天寫了下面的程序。
大概思路:先獲取文件夾下所有文件名存在列表中,然后循環(huán)遍歷訪問(wèn)文件內(nèi)容,修改后寫入新文件,考慮到還有子文件夾,這里用了遞歸的方法訪問(wèn)子文件夾的文件,最后修改完再把原文件刪除,將新文件修改為原文件名,具體程序功能見(jiàn)代碼注釋。
完整代碼:
#coding=utf-8#可加入中文注釋
#函數(shù)功能:將指定文件夾下所有文件和子文件夾下的文件遍歷,并修改文件內(nèi)容
import os
fpath ="/home/hyj/桌面/files_1"#這里是你的第一級(jí)文件夾的路徑
def filechanger(path):
filenames = os.listdir(path)#將path路徑下的所有文件名存入列表filenames
for filename in filenames:#循環(huán)遍歷每個(gè)文件
domain = os.path.abspath(path)#獲取規(guī)范的路徑
filename = os.path.join(domain,filename)#帶路徑的文件名
if os.path.isdir(filename): # 如果是文件夾進(jìn)入遞歸
filechanger(filename)
continue
fread = open(filename,'r')
fwrite = open("%s.backup"%filename,'w')
while True:#修改文件內(nèi)容
line=fread.readline()#按行讀取內(nèi)容
if len(line)>0:#當(dāng)改行為空,表明已經(jīng)讀取到文件末尾,退出循環(huán)
content = line.split()#因?yàn)槊啃杏腥齻€(gè)TAB符號(hào)分開(kāi)的數(shù)字,將它們分開(kāi)
print(content)
content[2] = '-'+content[2]
print(content)
newcont = content[0]+'\t'+content[1]+'\t'+content[2]+'\r'
fwrite.write(newcont)#修改后寫入新文件
else:
break
fread.close()
fwrite.close()
os.remove(filename)#如果想更改數(shù)據(jù)后想保留原文件以及修改文件名可屏蔽這一句和下一句
os.rename("%s.backup" % filename, filename)#
filechanger(fpath)
修改前
第1級(jí)文件夾及文件內(nèi)容


第2級(jí)文件夾及文件內(nèi)容


第3級(jí)文件夾及文件內(nèi)容

修改后文件內(nèi)容


如果想更改數(shù)據(jù)后想保留原文件以及修改文件名,可屏蔽代碼中的兩句話

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
相關(guān)文章
Python pandas的describe函數(shù)參數(shù)示例詳解
describe()函數(shù)是pandas 中一個(gè)十分實(shí)用的工具,用于快速獲取數(shù)據(jù)集的描述性統(tǒng)計(jì)信息,本文詳細(xì)介紹了該函數(shù)的各種參數(shù)及其用法,包括控制輸出的百分位數(shù)、列類型以及是否將日期時(shí)間列視為數(shù)值型列等,感興趣的朋友一起看看吧2018-04-04
基于pytorch實(shí)現(xiàn)對(duì)圖片進(jìn)行數(shù)據(jù)增強(qiáng)
圖像數(shù)據(jù)增強(qiáng)是一種在訓(xùn)練機(jī)器學(xué)習(xí)和深度學(xué)習(xí)模型時(shí)常用的策略,尤其是在計(jì)算機(jī)視覺(jué)領(lǐng)域,具體而言,它通過(guò)創(chuàng)建和原始圖像稍有不同的新圖像來(lái)擴(kuò)大訓(xùn)練集,本文給大家介紹了如何基于pytorch實(shí)現(xiàn)對(duì)圖片進(jìn)行數(shù)據(jù)增強(qiáng),需要的朋友可以參考下2024-01-01
淺談一下關(guān)于Python對(duì)XML的解析
這篇文章主要介紹了淺談一下關(guān)于Python對(duì)XML的解析,XML是一套定義語(yǔ)義標(biāo)記的規(guī)則,這些標(biāo)記將文檔分成許多部件并對(duì)這些部件加以標(biāo)識(shí),需要的朋友可以參考下2023-05-05
Python利用DNN實(shí)現(xiàn)寶石識(shí)別
深度神經(jīng)網(wǎng)絡(luò)(Deep Neural Networks,簡(jiǎn)稱DNN)是深度學(xué)習(xí)的基礎(chǔ),其結(jié)構(gòu)為input、hidden(可有多層)、output,每層均為全連接。本文將利用DNN實(shí)現(xiàn)寶石識(shí)別,感興趣的可以了解一下2022-01-01
python和node.js生成當(dāng)前時(shí)間戳的示例
這篇文章主要介紹了python和node.js生成當(dāng)前時(shí)間戳的示例,幫助大家更好的理解和學(xué)習(xí)python與node.js,感興趣的朋友可以了解下2020-09-09
python圖片和二進(jìn)制轉(zhuǎn)換的三種實(shí)現(xiàn)方式
本文介紹了將PIL格式、數(shù)組和圖片轉(zhuǎn)換為二進(jìn)制的不同方法,包括使用PIL庫(kù)、OpenCV和直接讀取二進(jìn)制,此外,還提到了數(shù)據(jù)傳輸中base64格式的應(yīng)用,這些信息對(duì)需要進(jìn)行圖片數(shù)據(jù)處理和轉(zhuǎn)換的開(kāi)發(fā)者非常有用2024-09-09
Python還能這么玩之用Python修改了班花的開(kāi)機(jī)密碼
今天帶大家學(xué)習(xí)如何用Python修改開(kāi)機(jī)密碼,文中有非常詳細(xì)的代碼示例,喜歡惡作劇的小伙伴可以看一下,不過(guò)不要亂用哦,需要的朋友可以參考下2021-06-06
Python在報(bào)表自動(dòng)化的優(yōu)勢(shì)及實(shí)現(xiàn)流程
本文利用Python實(shí)現(xiàn)報(bào)表自動(dòng)化,通過(guò)介紹環(huán)境設(shè)置、數(shù)據(jù)收集和準(zhǔn)備、報(bào)表生成以及自動(dòng)化流程,展示Python的靈活性和豐富的生態(tài)系統(tǒng)在報(bào)表自動(dòng)化中的卓越表現(xiàn),從設(shè)置虛擬環(huán)境到使用Pandas和Matplotlib處理數(shù)據(jù),到借助APScheduler實(shí)現(xiàn)定期自動(dòng)化,每個(gè)步驟都得到詳盡闡述2023-12-12

