不理解Python中的read命令

时间:2015-07-14 20:35:41

标签: python

我试图了解我的read功能正在发生什么。我只是做了一个readline我在树冠上创建的文本文档。出于某种原因,它只给了我w无论我投入的任何价值。我是Python新世界的新手,所以我确信这是一个简单的答案!谢谢你的帮助!

import os

my_file = open(os.path.expanduser("~/Desktop/Python Files/Test Text.txt"),'r')

print my_file.readline(3)

my_file.close()

我的文字文件位于

之下
w
o
r
d
s

3 个答案:

答案 0 :(得分:5)

my_file.readline(3)从第一行读取最多 3个字节。 第一行包含w和行尾字符。

如果您想要读取前3个字节而不考虑该行,请使用my_file.read(3)。请注意,行尾字符包含在计数中。

如果要打印前3行,可以使用

import os
with open(os.path.expanduser("~/Desktop/Python Files/Test Text.txt"),'r') as my_file:
    for i, line in enumerate(my_file):
        if i >= 3: break
        print(line)

import itertools as IT
with open(os.path.expanduser("~/Desktop/Python Files/Test Text.txt"),'r') as my_file:
    for line in IT.islice(my_file, 3):
        print(line)

对于短文件,您可以使用

with open(os.path.expanduser("~/Desktop/Python Files/Test Text.txt"),'r') as my_file:
    lines = my_file.readlines()
    for line in lines[:3]:
        print(line)

但请注意my_file.readlines()会返回所有中的行列表 文件。因为如果文件很大,并且因为它,这可能是非常占用大量内存的 通常可以逐行处理文件(这远远不够 内存密集型),一般是前两种读取文件的方法 优先于第三。

答案 1 :(得分:1)

  
    
      

'readline([size]) - >文件的下一行,作为字符串。返回换行符。非负大小参数限制要返回的最大字节数(然后可以返回不完整的行)。在EOF返回一个空字符串。

    
  

readline读取下一行,依此类推。参数size表示它应该从相应的行读取多少字节。

答案 2 :(得分:0)

使用f.readline不会随机访问该文件。我想你想读第三个(或者如果你是零索引的话,可能是第四个)。您传递给f.readline的参数是要读取的最大字节数,而不是要读取的特定行。