【发布时间】:2016-06-04 07:07:34
【问题描述】:
我正在尝试读取文件并在循环中用另一个值写入(覆盖)该文件。
a="1"
b="2"
for line in list:
if os.path.exists(str(line.rstrip('\n'))):
print line
with open('/ifs/data/Scripts/currentNode.txt','r+') as nodeNumber:
if nodeNumber.readline().rstrip('\n') == a:
print "Origin 1"
nodeNumber.write("2")
# nodeNumber.close()
elif nodeNumber.readline().rstrip('\n') == b:
print "Origin 2"
nodeNumber.write("1")
# nodeNumber.close()
time.sleep(5)
上面的代码只打印“Origin 1”。文件 currentNode.txt 中有数字 1。由于某种原因,它不会覆盖文件。如果我输出文件,我会看到“1”,但如果我打开文件,我会看到
1
2
任何想法为什么文件没有被覆盖?我睡了 5 秒,以为代码运行得很快。
谢谢。
【问题讨论】:
-
它不会被覆盖,因为您以
r+的身份打开了文件。尝试用w打开覆盖 -
我希望能够读取该文件。 w 将覆盖文件中的内容。基本上当我运行脚本时,如果文件有 1:我想要 2,如果文件有 2:我想要 1。
-
注意:避免使用
list作为变量名,因为这也是一个Python函数。 -
然后读取文件,关闭它,弄清楚要写什么,重新打开,写
-
如果第一行 if 计算结果为 False 两次不是同一行,您还意识到您正在阅读两行?此外,如果行可以 str.stripped 那么它已经是一个 str