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

2 投票
3 回答
3758 浏览
提问于 2025-04-16 05:23

这真是个尴尬的问题,虽然我来自网页开发,但很少需要处理文件输入输出。

我写了一个简单的配置更新程序,用在我的共享主机上。这个程序会扫描目录中的子目录,然后把配置行写入一个文件——每个子目录一行。问题是,当它发现有配置行但没有子目录时,应该把配置留空,但这并没有成功!我来这里问这个问题,因为文档里没有提到这个,谷歌也没什么帮助。我的环境是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 个回答

2

如果你想要清空一个文件,可以使用 truncate 这个方法:

f.truncate(0)
f.close()
2

你可能想在打开文件时使用 'w+' 这个模式,这样可以清空文件的内容。

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()

撰写回答