2013-11-04 132 views
0

我用這個代碼,以非結構化的文本文件中的每個令牌一行拆分其令牌和輸出:如何將輸出保存到新的txt文件中?

with open("C:\\...\\...\\...\\record-13.txt") as f: 
    lines = f.readlines() 
    for line in lines: 
     words = line.split() 
     for word in words: 
      print (word) 

現在我想將輸出保存到一個新的文本文件,而不是打印出來,我修改代碼如下:

with open("C:\\...\\...\\...\\record-13.txt") as f: 
    lines = f.readlines() 
    for line in lines: 
     words = line.split() 
     for word in words: 
      file = open ("tokens.txt", "w") 
      file.write (word) 
      file.close() 

但它不起作用。你能告訴我這有什麼問題嗎?

+0

每次你寫一個單詞時,關閉輸出文件。然後你打開它再次寫作,摧毀你所做的。等等。用open(「tokens.txt」,「w」)粘貼另一個':'在頂部附近,*不要*關閉循環內的輸出文件(或再次打開)。 –

回答

3

您正在打開每個令牌的文件,並且由於您使用模式'w'打開文件被截斷。您可以使用'a'模式打開以追加到文件,但效率非常低。

更好的方法是在開始時打開輸出文件並讓上下文管理器爲您關閉它。在開始時也不需要將整個文件讀入內存。

with open("in.txt") as in_file, open("tokens.txt", "w") as out_file: 
    for line in in_file: 
     words = line.split() 
     for word in words: 
      out_file.write(word) 
      out_file.write("\n") 

我懷疑你希望每個單詞都在不同的行上,所以請確保你也寫了一個新的行字符。

+0

謝謝,但我面臨一個錯誤(PermissionError:[Errno 13] Permission denied:'tokens.txt'),我不知道該怎麼處理。 – MACEE

+0

我想說你沒有目錄的寫入權限。 – Tim

+0

我可以更改目錄嗎?或任何其他選項? – MACEE

相關問題