在Python中将空字符串写入文本文件
这真是个尴尬的问题,虽然我来自网页开发,但很少需要处理文件输入输出。
我写了一个简单的配置更新程序,用在我的共享主机上。这个程序会扫描目录中的子目录,然后把配置行写入一个文件——每个子目录一行。问题是,当它发现有配置行但没有子目录时,应该把配置留空,但这并没有成功!我来这里问这个问题,因为文档里没有提到这个,谷歌也没什么帮助。我的环境是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()