我目前正在使用以下语句将文件的每一行写入列表
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:
...
答案 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
这将是高效的内存效率,因为所有行都不会一次读取并存储在内存中。