我正在编写此代码以读取文本文件,然后在每行之后打印行号,这里是我的代码
with open("newfile.txt") as f:
for line in f:
x=1
y=str(x)
print(line)
print(x)
x=x+1
f.close()
我应该期待像这样的事情
第一行
1
第二行
2
第三行
3
但我得到了
第一行
1
第二行
1
第三行
1
为什么会这样!?
答案 0 :(得分:3)
您可以使用enumerate()
:
with open("newfile.txt") as f:
for num,line in enumerate(f,1):
print line,'\n',num
另请注意,使用with
语句时无需关闭文件。它将自动为您完成。
关于代码中的x
变量,您不应该在循环中初始化它,您需要将x=1
放在循环之外。
答案 1 :(得分:1)
问题是您在循环内和x
语句之前初始化1
到print
。
尝试:
x = 1
with open("newfile.txt") as f:
for line in f:
y = str(x)
print(line)
print(x)
x += 1
答案 2 :(得分:1)
在代码中添加注释有助于您了解始终打印1
的原因。
with open("newfile.txt") as f:
for line in f:
x=1 # x is now equal to 1
y=str(x) # x is still 1, y is now equal to '1'
print(line) # prints out the line
print(x) # 1 is printed
x=x+1 # you now add 1 to x, but don't do anything with this
# updated value, because in the next loop x is again
# initialised to 1
f.close()
答案 3 :(得分:0)
代码的问题是循环内部的x = 1。通过将其移到外部并在获得所需结果之前初始化它。例如:
x=1
with open("newfile.txt") as f:
for line in f:
y=str(x)
print(line)
print(x)
x=x+1
这应该有效