outfile = open(inputfile, 'w')
outfile.write(argument)
outfile.flush()
os.fsync(outfile)
outfile.close
这是代码片段。我正在尝试在python中写入一些文件。但是当我们打开文件时,什么都不写入。我做错了什么?无法使用python将数据写入文件
outfile = open(inputfile, 'w')
outfile.write(argument)
outfile.flush()
os.fsync(outfile)
outfile.close
这是代码片段。我正在尝试在python中写入一些文件。但是当我们打开文件时,什么都不写入。我做错了什么?无法使用python将数据写入文件
您不打电话给outfile.close
方法。
没有必要在这里刷新,只是调用close正确:
outfile = open(inputfile, 'w')
outfile.write(argument)
outfile.close()
或者更好的是,使用文件对象的上下文管理器:
with open(inputfile, 'w') as outfile:
outfile.write(argument)
这一切都是假设是argument
不一个空字符串,并且您正在查看正确的文件。如果在inputfile
中使用相对路径,则使用的绝对路径取决于当前的工作目录,您可能正在查看错误的文件以查看是否写入了某些内容。
脚本退出时不应该关闭(并刷新)文件吗? –
@SunnyNanda:是的,当Python退出时,文件也会被关闭。虽然在这个问题中没有提到这一点。我还提到,推定是'argument'不是一个空字符串。 –
@SunnyNanda:增加了另一个假设; OP正在查看正确的文件。 –
尝试用
outfile.close()
注意括号。
outfile.close
只会返回函数对象而没有做任何事情。
在刷新或关闭文件之前,您不会看到写入的数据。而在你的情况下,你没有正确地冲洗/关闭文件。
* flush the file and not stdout - So you should invoke it as outfile.flush()
* close is a function. So you should invoke it as outfile.close()
所以正确的片断将
outfile = open(inputfile, 'w')
outfile.write(argument)
outfile.flush()
outfile.close()
你为什么要冲洗'stdout',而不是关闭文件对象? –
对不起。这是一个错误 –
你为什么要命名outputfile输入文件? –