2017-08-24 24 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 
相关问题