2016-04-24 242 views
1

我有一個Python腳本在我的筆記本電腦上正常運行,但在我的樹莓派上運行時,下面的代碼似乎沒有正常工作。具體而言,「TextFile.txt」未被更新和/或保存。Python腳本沒有寫入txt文件

openfile = open('/PATH/TextFile.txt','w') 
    for line in lines: 
     if line.startswith(start): 
      openfile.write(keep+'\n') 
      print ("test 1") 
     else: 
      openfile.write(line) 
      print ("test 2") 
    openfile.close() 

我看到「測試1」和「測試2」在我的輸出,所以我知道這些代碼被達到,路徑是正確的,等

這可能是由於權限問題。我使用的是從終端運行腳本:

usr/bin/python PATH/script.py 

Python歸「root」所有,script.py歸「Michael」所有。

+0

如果這是由於權限問題引起的,那麼打開該文件會引發異常,但您聲稱不會發生這種情況。 –

回答

0

由於您的代碼正在運行,因此應該有某個文件。

您調用「PATH/script.py」,但程序中有「/PATH/TextFile.txt」。 PATH之前的斜線是否是一個錯誤?你有沒有在你的程序中檢查路徑確實是你正在尋找輸出文件的地方?

0

我的第一個猜測:

該文件是否存在?如果它不存在,那麼你不能寫信給它。試試這個來創建文件,如果它不存在的話:file = open('myfile.dat', 'w+')

另外手動打開和關閉文件句柄在Python中是不好的做法。 with語句自動爲您處理資源的打開和關閉:

with open("myfile.dat", "w+") as f: 
    #doyourcalculations with the file object here 
    for line in f: 
     print line 
0

全部,謝謝您的輸入。我能夠弄清楚它正在寫入新文件,但它被同一文本覆蓋。原因是因爲當我預期真實的時候,「.startswith」會回覆錯誤。誤解是由於Windows和Unix如何處理新行字符(/ n/r)之間的區別。