繁体   English   中英

从txt文件中读取数据

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM