相当令人尴尬的问题,虽然我来自网络开发,很少需要处理文件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放在看似随机的行位置。
答案 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()