2017-08-24 25 views
1

感謝所有的反饋,現在錯誤已修復。試圖寫入一個文件,但我得到一個錯誤,說寫需要一個文件對象而不是一個字符串

我想用這段代碼寫入一個文件。

import datetime 
from datetime import datetime 
ctime = str(datetime.now()) 
try: 
    open("pyth_log.txt", "w") 
    file.write("pyth_log.txt") 
    file.write("-------") 
    file.write("LOG") 
    file.write(ctime) 
    file.write("-------") 
    file.close() 
except: 
    print("Unable to open file") 
    raise 

錯誤,我得到:

TypeError: descriptor 'write' requires a 'file' object but received a 'str' 

我也試圖與 「pyth_log.txt」 不加引號,但隨後給我的錯誤運行代碼:

NameError: name 'pyth_log' is not defined 
+1

您是否嘗試過使用'open()的返回'對象? –

+0

您正在調用'file.write()',但您從未定義'file'。 – pstatix

+0

@ pstatix:'file'被定義,它只是不是他們想要的。 –

回答

2

您錯過了將文件指針分配給文件變量 試試這個

from datetime import datetime 
ctime = str(datetime.now()) 
try: 
    with open("pyth_log.txt", "w") as file: 
     file.write("pyth_log.txt") 
     file.write("-------") 
     file.write("LOG") 
     file.write(ctime) 
     file.write("-------") 
except: 
    print("Unable to open file") 
+0

工作過,謝謝! –

+1

鼓勵使用上下文管理器是一種很好的做法,即。 (open)(「pyth_log.txt」,「w」)作爲file:' - 這樣也不需要顯式的'close()',並且避免了在任何地方出現異常* )'然後跳過關閉(因爲'except'塊沒有)。 –

+0

請標記爲答案 –

1

爲了使用write()方法,您必須與文件對象一起使用。此外,最好是使用with open()語法上調用close()的範圍將被丟棄時with結束:

import datetime 
from datetime import datetime 
ctime = str(datetime.now()) 
try: 
    with open("pyth_log.txt", 'w') as f: 
     file.write("pyth_log.txt\n" 
        "-------\n" 
        "LOG\n" 
        + ctime + "\n" 
        "-------") 
except: 
    print("Unable to open file") 
    raise 
2
from datetime import datetime 

ctime = str(datetime.now()) 
try: 
    with open("pyth_log.txt", "w") as file: 
     file.write("-------\n") 
     file.write("LOG\n") 
     file.write(ctime) 
     file.write("\n-------\n") 
except: 
    print("Unable to open file") 
    raise 
相關問題