簡體   English   中英

讀取特定行時在python中不輸出任何輸出到文本文件

[英]Printing no output to a text file in python while reading specific lines

我想將文件的每三行(從第2行開始)打印到新文件。 文件( line.txt )的示例是

line1
line2
line3
line4
line5
line6
line7
line8
line9
line10
line11

輸出將是

line2
line5
line8
line11

我寫的腳本是

with open ('line.txt') as file:
    for line in file.read().split("\n")[1::3]:
        print (line)
        f = open('output.txt','w')
        f.write(line)
        f.close()

但是,什么也沒有復制到output.txt file output.txt保留為空白。 即使我在python IDLE中運行腳本后print了該line ,該line返回空白''。 但是在運行腳本期間,輸出是所需的輸出,即

line2
line5
line8
line11

任何幫助或提示將不勝感激!

您正在關閉output.txt文件,並在每次循環時再次打開它。 我建議把這些放在循環之外:

with open('output.txt', 'w') as f:
    with open ('line.txt', 'r') as file:
        for line in file.readlines()[1::3]:
            print(line)
            f.write(line)

注意:我還在寫語句中添加了+'\\n以在您的output.txt中包含行尾

編輯:正如@DeepSpace正確指出的那樣,您最好將with open()與文件和readlines()而不是read().split('\\n') with open()使用時with open()無需記住將其關閉。

with open ('line.txt') as file:
        f = open('output.txt','w')
        for line in file.read().split("\n")[1::3]:
            outputline=line
            f.write(outputline)
        f.close()

以下腳本根據您的描述寫入文件output.txt我希望將每 output.txt (從第2行開始)從文件打印到新文件

output_file = open("output.txt", "a")
with open ('line.txt') as file:
    for line in file.readlines()[1::3]:
        output_file.write(line)
output_file.close()

我使用readlines()而不是read()因為它讀取整行而不是讀取單個字符串。 另外,我使用的是"a"而不是"w"打開文件,因為追加模式允許您將內容追加到文件中。 使用"w"您覆蓋了循環的每個迭代。 希望對您有所幫助。

暫無
暫無

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

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