Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python没有';无法读取整个txt文件_Python_Python 3.x - Fatal编程技术网

Python没有';无法读取整个txt文件

Python没有';无法读取整个txt文件,python,python-3.x,Python,Python 3.x,我正在学习python基础知识,并做了一个练习,需要逐行读取txt文件和打印文件内容。这是我的密码: t = open('mbox-short.txt') for line in t: print(line) 以下是文件: 问题是,当我运行脚本时,输出并没有显示文件的几行。上述原始文件中的第一行是: From stephen.marquard@uct.ac.za Sat Jan 5 09:14:16 2008 每次我运行脚本时,它都会显示从行开始的内容: Received: fr

我正在学习python基础知识,并做了一个练习,需要逐行读取txt文件和打印文件内容。这是我的密码:

t = open('mbox-short.txt')

for line in t:
    print(line)
以下是文件:

问题是,当我运行脚本时,输出并没有显示文件的几行。上述原始文件中的第一行是:

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。
谢谢。

我这样做没有任何问题:

>>> 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'

因此,我建议您稍微修改一下代码,首先读取文本文件,然后使用拆分行来迭代行。

也许像这样只打印行

with open("./mbox-short.txt", "r") as ins:
    for line in ins:
        print(line)

如果只想查找第一个单词,可以使用[0]打开并尝试使用正向索引查找第一行;如果要查找第一行,可以使用splitlines()查找第一行

输出:

>>> print f.split()[0]  
From
>>>>
>>> print f.splitlines()[0]
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
>>>
>>> f = open('mbox-short.txt', 'r').readline()
>>> print f
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
>>>
现在我们将找到第一行

f = open('file.txt', 'r').read()
print f.splitlines()[0] # First Line Using Positive Indexing
输出:

>>> print f.split()[0]  
From
>>>>
>>> print f.splitlines()[0]
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
>>>
>>> f = open('mbox-short.txt', 'r').readline()
>>> print f
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
>>>
或者也可以使用readline()执行此操作:

输出:

>>> print f.split()[0]  
From
>>>>
>>> print f.splitlines()[0]
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
>>>
>>> f = open('mbox-short.txt', 'r').readline()
>>> print f
From stephen.marquard@uct.ac.za Sat Jan  5 09:14:16 2008
>>>

谢谢

@halfelf在评论中发布了正确答案,所以我将其复制到这里:


我猜只是你的cmd/powershell的缓冲区不能包含1910 该文件的行,并且开始行已滚动


我刚刚增加了cmd属性中的缓冲区大小,现在它显示了所有行。谢谢大家的回答,我很感激。

要想得到所有的台词,你必须这样做:

t = open('mbox-short.txt', 'r').readlines()
for n in t:
  line = n.strip()
  print line

我下载了指定的文件并运行了您的代码。“它在我的机器上工作。”我想这只是因为你的cmd/powershell的缓冲区不能包含该文件的1910行,并且开始行已被滚动。@quemrana,他想获取该文件的第一行text@halfelf你是对的。我增加了缓冲区大小(5000),现在它终于显示了所有行。谢谢大家!@SkillerDz OP发布的代码说他想要文件中的所有行。这是我在“我的机器”上运行它时观察到的。手柄是quamrana,全是a。