簡體   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