對txt檔案批量操作

2021-10-22 07:35:13 字數 1087 閱讀 4516

事情的原委是將兩個資料集放在一起。把行人車輛、交通燈同時放在yolov4下面訓練,所以需要融合wpi資料集和kitti資料集。於是需要改寫label中的每行第乙個數字。:

遍歷label資料夾下的每乙個txt檔案,依次將txt中每行第乙個數字加3。

開始把問題想的太簡單了:

一開始想的是直接使用listdir(txt路徑),然後遍歷每個txt檔案,開啟之後,直接將每一行第乙個元素加3。但隨後發現存在很多問題。比如使用open(『***』,『r』),通過唯讀方式或者預設方式開啟txt後,只能讀取裡面的內容,而不能直接在原本的基礎上進行修改。而使用open(』***,』w『)這種寫操作的方式開啟txt,則不能遍歷。

這就有點為難了。後來在使用的提點下,明白了應該是首先用預設方式,開啟txt,讀取所有內容到乙個臨時的變數中,再去修改臨時變數。最後將這個臨時變數寫入到乙個新的txt中。完成整個檔案的修改。

於是沿著這個思路開始改**,隨後又遇到問題,寫入txt文件中的內容,只能是字串,不能是數字或者其他的東西。於是,則想到將每一行的第乙個元素轉化為int型,變成int後就可以進行加減四則運算了。然後處理完後,再轉化為字串。然後使用乙個repalce的操作,賦值給乙個新的變數。最後寫入到新建立的txt中。完成整個操作。

import os

txtpath='/home/lhm/臨時放置的紅綠燈標籤/labels/'

txtlists=os.listdir(txtpath)

new_txtpath='/home/lhm/臨時放置的紅綠燈標籤/labels_new/'

for txt in txtlists:

f_new=open(new_txtpath+txt,'w')

f=open(txtpath+txt,'r')

lines = f.readlines()

for line in lines:

b=int(line[0])

b+=3

b=str(b)

a=line.replace(line[0],b,1)

f_new.write(a)

f_new.close()

f.close()## 標題

檔案批量操作之旅

檔案重新命名 os.rename a.txt b.txt 檔案批量操作 my code test 1.jpg 2.jpg import os file list os.listdir test 當前目錄下的檔案列表 相對路徑 以當當前目錄為起點的路徑 for f in file list print...

python通過txt檔案批量安裝依賴包的實現步驟

如果要用程式設計客棧某個開源框架,需要安裝多個依賴包可以如下操作 如依賴檔案形式如下 可以不要版本號 txt檔名為requirements.txt,內容為 sklearn 0.0 subprocess32www.cppcns.com 3.2.7 tablestore 4.3.4 tensorboar...

原創 Python批量操作檔案,批量合併

最近幾個小夥伴在手動合併一些文字檔案,感覺可以用python批量實現,就有了這段 1 importos2 importre3 import sys4 5def printenter f1 每兩個檔案之間的換行操作 6 f1.write n n n 7for i in range 23 8 f1.wr...