[英]Reading data from txt file
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程序没有读取第一个数字?
使用简单的打印来跟踪正在发生的事情:
for num in file_output:
print("num=", num)
number=file_output.read()
print(number)
输出:
num= 53
48
85
58
16
11
82
注意效果: num是第一个输入的数字,但只出现一次。 你只经过一次循环。
你的for循环从文件中抓取第一个数字; 循环中的读取获取文件的其余部分作为一个输入。
我建议您查找您正在使用的每个命令的实际功能; 你对操作还不是很清楚。
修理
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
请注意,您仍将这些作为字符串阅读,并带有换行符。 从这里继续作为练习留给读者。 :-)
在 for 循环的第一次迭代期间使用文件的第一行。 read()
然后从文件中的当前位置(即第二行的开头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
打开。 这将确保文件在所有情况下都将关闭。
在“open(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]))
您的程序正在读取第一个数字。 当您开始迭代文件对象时, 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)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.