如何使用Python清空一个文件

91

在Unix shell中,我可以通过以下方式清空一个文件:

cd /the/file/directory/
:> thefile.ext

我该如何在Python中实现这个功能?

在这里是否可以使用os.system,但我不知道该如何发送两个连续的动作,即先执行cd,然后执行:>


1
使用"w"模式打开文件不应该可以实现这个功能吗?例如:open("/the/path/thefile.ext","w") - Ulrich Schwarz
@Adergaard:我不愿意断言绝对不存在边界情况(例如网络文件系统),在这些情况下它可能会失败。我不知道你是否处于这些情况之一,并且已经尝试过,但它并没有起作用。 - Ulrich Schwarz
这个回答解决了你的问题吗?如何在Python中清空文本文件的内容? - mkrieger1
2个回答

198

打开文件会创建它,并在未设置为追加模式('a')的情况下用空内容覆盖它,就像这样:

open(filename, 'w').close()

如果文件被不断写入(它是一个每秒钟都会写入的日志文件),会有问题吗? - Adergaard
1
一般来说不会。如果文件已经存在,它将不会被创建,而是使用同名文件并截断其内容。如果日志进程继续向该文件写入,那么内容也会出现在这个文件中。然而,如果与基于seektell的文件操作结合使用,可能会发生奇怪的情况。 - rumpel
奇怪,这似乎并不是事实。 - Andy Hayden
在for循环中重写文件时,os.remove("filename")没有起作用。我使用了这个方法:先删除文件,然后再用file1 = open("filename", "w")打开文件。 - Steven2163712

42

@rumpel提供的答案的替代形式

with open(filename, 'w'): pass

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接