在Python中将空字符串写入文本文件

时间:2010-10-12 21:58:28

标签: python file-io

相当令人尴尬的问题,虽然我来自网络开发,很少需要处理文件i / o。

我写了一个简单的配置更新程序,用于我的共享主机。它扫描目录中的子目录,然后将配置行写入文件 - 每个子目录一行。问题是,当它检测到有配置行但没有子目录时,它应该保留配置为空 - 这不起作用!来到这里因为文档没有提及它和谷歌也没有帮助。它在Debian Lenny上的Python 2.6.6。

file = open('path', 'r+')
config = file.read()
## all the code inbetween works fine
## config is .split()-ed, hence the list
if config == ['']:
    config = ''
file.write(config)
file.close()

在这种情况下,文件根本不会更改。有趣的是,让它忘记配置,只是做file.write('')也不会清空文件,但把\ n放在看似随机的行位置。

3 个答案:

答案 0 :(得分:3)

您正在使用r+读写模式。所有读取和所有写入都会更新文件的位置。

尝试:

file = open('path', 'r+')
config = file.read()
## all the code inbetween works fine
## config is .split()-ed, hence the list
if config == ['']:
    config = ''
file.seek(0)    # rewind the file
file.write(config)
file.close()

答案 1 :(得分:2)

您可能希望在'w+'调用中使用open模式来截断文件。

答案 2 :(得分:2)

如果您要清空文件,请使用truncate

f.truncate(0)
f.close()