python - 讀寫文件操作

  • python讀寫文件并替換文件內(nèi)容
# -*- coding: utf-8 -*-
# 將本地的test.txt文本文件內(nèi)容中所有為“許嵩”的全部替換為"xs",并寫入到原來的文本文件中
f1 = open('G:/lyric/test/醫(yī)生.txt', 'r+', encoding='utf-8')  # 打開本地的test.txt文本文件
content = f1.read()  # 讀取text文本文件中的內(nèi)容
print("原文件內(nèi)容為:" + '\n' + content)
f1.close()  # 關(guān)閉操作
customary_content = "許嵩"
new_content = "xs"
name = content.replace(customary_content, new_content)  # 內(nèi)容替換
if customary_content not in content:  # 判斷要替換的內(nèi)容是否在文本文件中
    print("沒有找到你要替換的內(nèi)容")
else:
    with open('G:/lyric/test/醫(yī)生.txt' , "w", encoding='utf-8') as f2:  # 再次打開test.txt文本文件
        f2.write(name)  # 將替換后的內(nèi)容寫入到test.txt文本文件中
        print("替換成功!" + '\n' + "替換后的內(nèi)容為:" + name)

  • 刪除一個文本文件中包含某個關(guān)鍵字的行

要刪除一個文本文件中包含某個關(guān)鍵字的行张症,可以按照行讀取文件,判斷是否包含關(guān)鍵字,然后將不包含關(guān)鍵字的行寫入新的文件中嘲恍。最后,將新的文件重命名為原來的文件名雄驹,就可以達(dá)到刪除指定行的目的佃牛。
例中對文件G:/lyric/test/醫(yī)生.txt 刪除了含有關(guān)鍵詞 '許嵩’的對應(yīng)行

# 指定文件名和關(guān)鍵字
filename = 'G:/lyric/test/醫(yī)生.txt'
key = '許嵩'

# 打開原始文件和臨時文件
with open(filename, 'r') as infile, open('G:/lyric/test/醫(yī)生_new.txt', 'w') as outfile:
    # 遍歷每一行
    for line in infile:
        # 判斷是否包含關(guān)鍵字
        if key not in line:
            # 寫入不包含關(guān)鍵字的行
            outfile.write(line)

# 刪除原始文件并將臨時文件重命名為原始文件名
import os
os.remove(filename)
os.rename('G:/lyric/test/醫(yī)生_new.txt', filename)
處理前文本

處理后文本
  • 刪除一個文本文件中包含某個關(guān)鍵字的行,key為多個

打開名為 file.txt 的文件并讀取所有行。定義一個關(guān)鍵字列表医舆,并使用列表推導(dǎo)式創(chuàng)建一個新的行列表俘侠,該列表不包含任何包含任何關(guān)鍵字的行象缀。最后,我們將打開相同的文件爷速,以寫入模式打開央星,并將新行寫入該文件。
例取仗劍.txt惫东,刪除除歌詞外的多余部分莉给,將結(jié)果寫入仗劍_new.txt

#刪除txt文件中包含key的對應(yīng)行,key為多個
# 打開txt文件
with open('G:/lyric/test/仗劍.txt', 'r') as f:
    lines = f.readlines()

# 定義要刪除的關(guān)鍵字列表
keywords = ['編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','和音','大提琴','錄音','混音','笛子','琵琶']

# 創(chuàng)建新的行列表廉沮,排除包含關(guān)鍵字的行
new_lines = [line for line in lines if not any(keyword in line for keyword in keywords)]

# 打開txt文件以寫入模式颓遏,并寫入新行
with open('G:/lyric/test/仗劍_new.txt', 'w') as f:
    f.writelines(new_lines)
處理前文本

處理后文本
  • 刪除文件夾內(nèi)多個txt文件中包含多個關(guān)鍵字的行:

定義要刪除的關(guān)鍵字列表和文件夾路徑。
使用 os.listdir() 遍歷文件夾內(nèi)的所有文件废封,并檢查每個文件是否為 .txt 文件州泊。對于每個 .txt 文件,我們打開它漂洋,讀取所有行遥皂,并使用列表推導(dǎo)式創(chuàng)建一個新的行列表,該列表不包含任何包含任何關(guān)鍵字的行刽漂。最后演训,我們將打開相同的文件,以寫入模式打開贝咙,并將新行寫入該文件样悟。

  • 根據(jù)需求定義關(guān)鍵詞,僅保留歌詞文本部分庭猩。
    以下部分代碼對已有.txt文件數(shù)據(jù)集的內(nèi)容進(jìn)行復(fù)寫窟她,保留有效文字部分
    定義要刪除的關(guān)鍵字列表
    keywords = ['許嵩', '編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','和音','大提琴','錄音','混音','笛子','琵琶']
import os

# 定義要刪除的關(guān)鍵字列表
keywords = ['許嵩', '編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','和音','大提琴','錄音','混音','笛子','琵琶']

# 定義文件夾路徑
folder_path = 'G:/lyric/test'

# 遍歷文件夾內(nèi)的所有txt文件
for filename in os.listdir(folder_path):
    if filename.endswith('.txt'):
        # 打開txt文件
        with open(os.path.join(folder_path, filename), 'r') as f:
            lines = f.readlines()

        # 創(chuàng)建新的行列表,排除包含關(guān)鍵字的行
        new_lines = [line for line in lines if not any(keyword in line for keyword in keywords)]

        # 打開txt文件以寫入模式蔼水,并寫入新行
        with open(os.path.join(folder_path, filename), 'w') as f:
            f.writelines(new_lines)

刪除前文本
處理后文本
  • 刪除文件夾內(nèi)多個txt文件中包含多個關(guān)鍵字的行震糖,保存在新文件夾內(nèi):

folder_path = 'G:/lyric/xs'
folder_path2 = 'G:/lyric/xs/new'
對路徑1下的txt文件進(jìn)行處理,將處理結(jié)果保存在路徑2中

import os

# 定義要刪除的關(guān)鍵字列表
keywords = ['許嵩', '編曲', '制作','吉他','弦樂', '監(jiān)制','Bass','作詞','作曲','鼓','古箏','和音','小號','提琴','錄音','混音','笛子','琵琶']

# 定義文件夾路徑
folder_path = 'G:/lyric/xs'
folder_path2 = 'G:/lyric/xs/new'

# 遍歷文件夾內(nèi)的所有txt文件
for filename in os.listdir(folder_path):
    if filename.endswith('.txt'):
        # 打開txt文件
        with open(os.path.join(folder_path, filename), 'r') as f:
            lines = f.readlines()

        # 創(chuàng)建新的行列表趴腋,排除包含關(guān)鍵字的行
        new_lines = [line for line in lines if not any(keyword in line for keyword in keywords)]

        # 打開txt文件以寫入模式吊说,并寫入新行
        with open(os.path.join(folder_path2, filename), 'w') as f:
            f.writelines(new_lines)

image.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市优炬,隨后出現(xiàn)的幾起案子颁井,更是在濱河造成了極大的恐慌,老刑警劉巖蠢护,帶你破解...
    沈念sama閱讀 218,386評論 6 506
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件雅宾,死亡現(xiàn)場離奇詭異,居然都是意外死亡糊余,警方通過查閱死者的電腦和手機(jī)秀又,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,142評論 3 394
  • 文/潘曉璐 我一進(jìn)店門单寂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人吐辙,你說我怎么就攤上這事宣决。” “怎么了昏苏?”我有些...
    開封第一講書人閱讀 164,704評論 0 353
  • 文/不壞的土叔 我叫張陵尊沸,是天一觀的道長。 經(jīng)常有香客問我贤惯,道長洼专,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,702評論 1 294
  • 正文 為了忘掉前任孵构,我火速辦了婚禮屁商,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘颈墅。我一直安慰自己蜡镶,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,716評論 6 392
  • 文/花漫 我一把揭開白布恤筛。 她就那樣靜靜地躺著官还,像睡著了一般。 火紅的嫁衣襯著肌膚如雪毒坛。 梳的紋絲不亂的頭發(fā)上望伦,一...
    開封第一講書人閱讀 51,573評論 1 305
  • 那天,我揣著相機(jī)與錄音煎殷,去河邊找鬼屯伞。 笑死,一個胖子當(dāng)著我的面吹牛豪直,可吹牛的內(nèi)容都是我干的愕掏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,314評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼顶伞,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了剑梳?” 一聲冷哼從身側(cè)響起唆貌,我...
    開封第一講書人閱讀 39,230評論 0 276
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎垢乙,沒想到半個月后锨咙,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,680評論 1 314
  • 正文 獨居荒郊野嶺守林人離奇死亡追逮,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,873評論 3 336
  • 正文 我和宋清朗相戀三年酪刀,在試婚紗的時候發(fā)現(xiàn)自己被綠了粹舵。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,991評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡骂倘,死狀恐怖眼滤,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情历涝,我是刑警寧澤诅需,帶...
    沈念sama閱讀 35,706評論 5 346
  • 正文 年R本政府宣布,位于F島的核電站荧库,受9級特大地震影響堰塌,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜分衫,卻給世界環(huán)境...
    茶點故事閱讀 41,329評論 3 330
  • 文/蒙蒙 一场刑、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚪战,春花似錦牵现、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,910評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至概漱,卻和暖如春丑慎,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背瓤摧。 一陣腳步聲響...
    開封第一講書人閱讀 33,038評論 1 270
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留照弥,地道東北人。 一個月前我還...
    沈念sama閱讀 48,158評論 3 370
  • 正文 我出身青樓悔常,卻偏偏與公主長得像,于是被迫代替她去往敵國和親残邀。 傳聞我的和親對象是個殘疾皇子空免,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,941評論 2 355

推薦閱讀更多精彩內(nèi)容