我基本上尝试使用新更新的数字更新已保存文件中的一行,但它只在文件中留下一行。感觉就像覆盖整个文件而不是更新它。我在这里查看了其他问题,虽然他们给了我正确的模块,但我似乎无法弄清楚我遇到的问题。
unique = 1
for line in fileinput.input('tweet log.txt', inplace=1):
if tweet_id in line: #checks if ID is unique, if it is not, needs to update it
tweet_fields = line.split(';')
old_count = tweet_fields[-2]
new_count = 'retweet=%d' % (int(tweet_retweet))
line = line.replace(old_count, new_count)
print line
unique = 0
if unique == 1: #if previous if didn't find uniqueness, appends the file
save_file = open('tweet log.txt', 'a')
save_file.write('id='+tweet_id +';'+
'timestamp='+tweet_timestamp+';'+
'source='+tweet_source+';'+
'retweet='+tweet_retweet+';'+'\n')
save_file.close()
我觉得这有一个非常简单的解决方案,但我显然很想念它。 提前谢谢!
答案 0 :(得分:0)
我认为您遇到的问题是由于您在输入循环中的条件。当fileinput.input
与inplace=1
参数一起使用时,它会重命名原始文件,添加“备份”扩展名(默认为“.bak”),并将标准输出重定向到具有原始名称的新文件。 / p>
您的循环只打印您正在编辑的行。因此,所有不匹配的行都会从文件中过滤掉。您可以通过打印迭代的每一行来解决此问题,即使它不匹配也是如此。这是你的循环的改进版本:
for line in fileinput.input('tweet log.txt', inplace=1):
if tweet_id in line:
tweet_fields = line.split(';')
old_count = tweet_fields[-2]
new_count = 'retweet=%d' % (int(tweet_retweet))
line = line.replace(old_count, new_count)
unique = 0
print line
唯一的变化是将print line
语句移出if
块。