我正在学习python基础知识,并且需要练习我需要读取txt文件并逐行打印文件的内容。这是我的代码:
t = open('mbox-short.txt')
for line in t:
print(line)
这是文件:https://www.py4e.com/code3/mbox-short.txt
问题是,当我运行脚本时,输出不会显示文件的第一行。上述原始文件中的第一行是:
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
每次我运行我的脚本时都会显示从行开始的内容:
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
by nakamura.uits.iupui.edu (8.12.11.20060308/8.12.11) with ESMTP id m04GA5LR007211
请帮助我理解我做错了什么以及如何解决它。正如我所理解的,它与txt文件编码有关。我曾尝试多次下载和复制,通过记事本将编码从ANSI更改为UTF-8,但每次运行脚本时,它都会打印相同的输出,跳过少量第一行并仅从行开始:
Received: from nakamura.uits.iupui.edu (localhost [127.0.0.1])
还想提一下,我已经尝试阅读从web robots.txt文件中下载的随机文件,脚本会按原样读取所有内容,而不会跳过任何行。 我使用的是Windows 8.1 64位和最新的Python 3.6.5。 谢谢。
答案 0 :(得分:0)
我这样做没有任何问题:
>>> with open('./mbox-short.txt', 'r') as f:
txt = f.read()
>>> print(txt.splitlines()[0]) # display the first line
'From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008'
因此,我建议您稍微修改代码并首先read()
文本文件,然后使用splitlines()
迭代行。
答案 1 :(得分:0)
这样的印刷线可能是这样的吗?
with open("./mbox-short.txt", "r") as ins:
for line in ins:
print(line)
答案 2 :(得分:0)
你可以打开并尝试使用[0]使用正数索引找到第一行如果你想找到第一个单词只使用split(),如果你想找到第一行使用splitlines()
f = open('mbox-short.txt', 'r').read()
print f.split()[0] # Using Positive Indexing
输出:
>>> print f.split()[0]
From
>>>>
现在我们将找到第一行
f = open('file.txt', 'r').read()
print f.splitlines()[0] # First Line Using Positive Indexing
输出:
>>> print f.splitlines()[0]
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
>>>
或者您也可以使用readline():
f = open('mbox-short.txt', 'r').readline()
print f
输出:
>>> f = open('mbox-short.txt', 'r').readline()
>>> print f
From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008
>>>
谢谢!
答案 3 :(得分:0)
@halfelf在评论中发布了正确的答案,所以我将在这里复制:
我猜这只是你的cmd / powershell的缓冲区不能包含1910 该文件的行,并且已经滚动了起始行
我只是增加了cmd属性中的缓冲区大小,现在它显示了所有行。谢谢大家的回答,我很感激。
答案 4 :(得分:0)
获取所有行,你必须这样做:
t = open('mbox-short.txt', 'r').readlines()
for n in t:
line = n.strip()
print line