簡體   English   中英

通讀文件並寫到我剛讀的行

[英]Read through a file and write to the line I just read

因此,我想通讀一個文件,檢查每一行,看看它是否包含我要查找的字符串的一部分。 找到正確的行后,我想在文件中重寫該行。

這是我到目前為止的內容:

f = open("playlist.py", "r+")
for line in f:
    if old in line:
        f.write("    " + str(item) + ":" + " " + 
                "\""  + new_text + "\"") 
        f.close()
        break
f.close()

該代碼找到正確的行,但寫入文件的末尾。 我有點想讀和寫迭代器將被共享,但我想不是:(

使用文件fileinput

import fileinput

for line in fileinput.input("test.txt", inplace=True):
    if contains_str_youlookingfor:  
        print "what_you_want_to_rewire"
    else:
        print line.rstrip()
fileinput.close()

如果您使用的是Python 3.2+,則首選上下文管理器:

with fileinput.input("test.txt", inplace=True) as f:    
    for line in f:
        if contains_str_youlookingfor:  
            print("what_you_want_to_rewire")
        else:
            print(line, end='')

這些行將被替換為"what_you_want_to_rewire" ,並且不會創建新文件。

編輯
如果您不刪除原始換行符或在沒有換行符的情況下進行打印,則會得到多余的空白行。

您可以使用r +模式打開文件,然后將內容讀入列表並替換包含所需數據的行(列表項),然后將整個文件寫回到仍打開的文件中嗎? 像這樣的東西

f=open(filename, 'r+')
data=f.readlines()
for line in data:
    if old in line:
        line="    " + str(item) + ":" + " " + 
            "\""  + new_text + "\""
f.truncate()
f.writelines(data)
f.close()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM