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