从txt文件中读取数据

时间:2017-10-09 22:44:35

标签: python

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程序没有读取第一个数字?

4 个答案:

答案 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)