Python file.write()不写入文件

Python file.write()不写入文件,python,file,Python,File,我正在尝试为日志文件创建def,这是我的脚本: import sys import time path= 'pc_path' file = path + '\\' + 'test.txt' files = open(file, 'w') files.close() def log(msg): time = time.time() filess = open(file, 'a') filess.write(msg) filess.close() val = 1

我正在尝试为日志文件创建def,这是我的脚本:

import sys
import time
path= 'pc_path'
file = path + '\\' + 'test.txt'

files = open(file, 'w')
files.close()

def log(msg):
    time = time.time()
    filess = open(file, 'a')
    filess.write(msg)
    filess.close()

val = 10
val1 = 32
try:
    operazione = val + val1
    print('ok')
    print(operazione)
    msg = operazione
    log(msg)
except:
    sys.exit()
脚本将创建一个txt文件,但不会将def()函数写入txt
谢谢

您正在尝试将整数写入文件;
file.write()
方法只接受字符串

首先转换为字符串:

filess.write(str(msg))
除了代码中的处理程序之外,您真的不应该使用覆盖的
;你真的不想玩口袋妖怪然后把他们都抓起来。这样做会丢失有价值的错误信息。看


您可以使用。

尝试将整数写入文件;
file.write()
方法只接受字符串

首先转换为字符串:

filess.write(str(msg))
除了代码中的
处理程序之外,您真的不应该使用覆盖的
;你真的不想玩口袋妖怪然后把他们都抓起来。这样做会丢失有价值的错误信息。看


您可以只使用打开一个文件,然后关闭它,而不是滚动自己的文件。但是,您不需要在其中写入任何内容,因为函数
write()
如果除了
str()
类型的变量之外的任何内容都被传递给它,那么函数
write()将失败!这里有一个替代
write()
的方法,限制较少:

with open('file_name.txt', 'w') as file:

    print(variable_you_want_written, file=file, end='\n')
print()
函数限制较少,在这里是一个更好的选项,因为它会自动将接收到的输入格式化为
str()
,而不考虑初始的
类型()
,并且不包括函数、实例和生成器对象,这些对象将显示为如下内容:

此外,请注意,它们转换为的视觉格式(以及随后显示或写入文件)可能不一定符合您的喜好,因此我建议您对结果进行实验,看看在特定情况下什么效果最好


对于
print()
上的Python 3文档,打开一个文件,然后关闭它。但是,您不需要在其中写入任何内容,因为函数
write()
如果除了
str()
类型的变量之外的任何内容都被传递给它,那么函数
write()将失败!这里有一个替代
write()
的方法,限制较少:

with open('file_name.txt', 'w') as file:

    print(variable_you_want_written, file=file, end='\n')
print()
函数限制较少,在这里是一个更好的选项,因为它会自动将接收到的输入格式化为
str()
,而不考虑初始的
类型()
,并且不包括函数、实例和生成器对象,这些对象将显示为如下内容:

此外,请注意,它们转换为的视觉格式(以及随后显示或写入文件)可能不一定符合您的喜好,因此我建议您对结果进行实验,看看在特定情况下什么效果最好

对于
print()
上的Python 3文档

  • 将变量
    time
    重命名为类似
    current\u time
    的名称,以避免与模块
    time
    冲突

  • 您将
    msg
    (一个整数)传递到方法
    write
    。您应该首先将其转换为字符串:
    msg=str(operazione)

  • 将变量
    time
    重命名为类似
    current\u time
    的名称,以避免与模块
    time
    冲突

  • 您将
    msg
    (一个整数)传递到方法
    write
    。您应该首先将其转换为字符串:
    msg=str(operazione)


  • 它应该将
    msg
    写入文件,其中
    msg
    等于
    operazione
    ,因为
    msg=operazione
    。如果给出的任何答案都针对您的问题,请将其标记为这样,以便线程关闭,并且问题显示在黑板上。否则,请详细说明。它应该将
    msg
    写入文件,其中
    msg
    等于
    operazione
    ,因为
    msg=operazione
    。如果给出的任何答案都解决了您的问题,请将它们标记为这样,以便线程关闭,并且问题显示在黑板上。否则,请详细说明。我建议使用
    file.write()
    而不是将
    print()
    调用的stdout重定向到文件。您可以这样做。两者都可以。然而,
    print()
    的优点是,您不需要诱导转换,它们会(尝试)在其中写入一些内容。他们甚至使用
    'a'
    附加模式。但是用字符串以外的任何东西调用
    file.write()
    都会失败。@MartijnPieters没错。它确实失败了。我不写的意思是,由于函数失败,文件实际上没有任何内容。我的措辞很糟糕,我会修改。对,
    print()
    接受任何类型并将其转换为字符串。不过,您不需要添加
    end='\n'
    ,这是默认设置。您可能需要添加一个明确的解释,解释为什么
    print()
    在这里比使用
    file.write()
    效果更好。我建议使用
    file.write()
    而不是将
    print()
    调用的stdout重定向到文件。您可以这样做。两者都可以。然而,
    print()
    的优点是,您不需要诱导转换,它们会(尝试)在其中写入一些内容。他们甚至使用
    'a'
    附加模式。但是用字符串以外的任何东西调用
    file.write()
    都会失败。@MartijnPieters没错。它确实失败了。我不写的意思是,由于函数失败,文件实际上没有任何内容。我的措辞很糟糕,我会修改。对,
    print()
    接受任何类型并将其转换为字符串。不过,您不需要添加
    end='\n'
    ,这是默认设置。您可能需要添加一个明确的解释,解释为什么
    print()
    在这里比使用
    file.write()
    效果更好。我建议您这样做