def main():
file_output=open(r'C:\Users\P\Desktop\randominput.txt','r')
for num in file_output:
number=file_output.read()
print(number)
main()
输出:
48 85 58 16 11 82
txt文件中的实际数据是
53 48 85 58 16 11 82
为什么我的python程序没有读取第一个数字?
答案 0 :(得分:1)
使用简单的打印来追踪正在发生的事情:
for num in file_output:
print("num=", num)
number=file_output.read()
print(number)
输出:
num= 53
48
85
58
16
11
82
注意效果: num 是第一个输入数字,但它只出现一次。你只进行一次循环。
for 循环抓取文件中的第一个数字;循环中的读取将文件的剩余部分作为一个输入进行抓取。
我建议你查看你正在使用的每个命令的实际功能;你还没有完全清楚操作。
<强> REPAIR 强>
def main():
with open("so.txt") as file_output:
for num in file_output:
print("num=", num)
main()
输出:
num= 53
num= 48
num= 85
num= 58
num= 16
num= 11
num= 82
请注意,您仍然以字符串形式阅读这些内容,并使用换行符。继续从这里留下作为读者的练习。 : - )
答案 1 :(得分:1)
在for循环的第一次迭代期间消耗文件的第一行。然后read()
将文件从文件中的当前位置(第二行的开头)读取到文件的末尾。
因此,print()
一次性打印文件的内容,跳过第一行。
修复您的代码:
with open(r'C:\Users\P\Desktop\randominput.txt', 'r') as file_input:
for number in file_input:
print(number.rstrip())
rstrip()
用于删除每行末尾的换行符。此外,使用with
在上下文管理器中打开该文件。这将确保文件在所有情况下都将关闭。
答案 2 :(得分:1)
在“打开(r'C:\ Users \ P \ Desktop \ randominput.txt','r')中有一个错字”在'C \ Users \ P ...之前有一个r'?不应该在那里。
我相信您正在尝试打印文本文件中的每个数字。这是一种你可以做到这一点的方法:
f = open("C:/Users/u/file.txt")
file_contents = f.read()
numbers = str(file_contents).split()
for x in range (0, len(numbers) - 1):
print (str(numbers[x]))
答案 3 :(得分:0)
您的程序 正在读取第一个号码。当您开始遍历文件对象时,for num in file_output:
将读取文件的第一行,因此num
是第一个数字,文件阅读器现在正在查看第二个数字,等待下一次迭代。
然后调用.read()
,它将读取到文件的末尾。这将为您提供number
中所有其余数字,并将阅读器移动到文件末尾,终止迭代。你想要:
for num in file_output:
print(num)
或
numbers = file_output.read()
for n in numbers:
print(n)