是否有更好的(更pythonic)方式将文件内容写入列表?

时间:2014-05-20 09:31:28

标签: python file-io

我目前正在使用以下语句将文件的每一行写入列表

try:
  list = []
  with open(file, 'r') as f:
    for l in f.readlines():
      list.append(l)
except:
  ...

虽然它工作得很好,但我想知道是否有更多的pythonic方法来做到这一点?

修改 使用建议的更新

try:
  my_list = []
  with open(file, 'r') as f:
    my_list = f.readlines()
except IOError:
  ...

2 个答案:

答案 0 :(得分:5)

为什么不这样做:

try:
    with open(file, 'r') as f:
        lst = f.readlines()
except IOError:
    print("File doesn't exist")

f.readlines()已经返回文件中所有行的列表。

甚至 更简单:

try:
    with open(file, 'r') as f:
        lst = list(f)
except IOError:
    print("File doesn't exist")

答案 1 :(得分:4)

您的问题的答案在Python的Methods of File Objects section本身的文档中,

  

如果您想阅读列表中文件的所有行,您还可以使用list(f)f.readlines()

如果您要逐行处理文件,那么只需迭代文件对象,就像这样

for line in f:
    # Process line

这将是高效的内存效率,因为所有行都不会一次读取并存储在内存中。