您可以使用writelines()读取整个文件并拆分行:
temp = file.read().splitlines()
或者您可以手动剥离换行符:
temp = [line[:-1] for line in file]
注意:最后一个解决方案仅在文件以换行符结束时才有效,否则最后一行将丢失一个字符。
在大多数情况下,这种假设是正确的(特别是对于由文本编辑器创建的文件,它们通常会添加结束换行符)。
如果您想避免这种情况,可以在文件末尾添加换行符:
with open(the_file, 'r+') as f:
f.seek(-1, 2) # go at the end of the file
if f.read(1) != '\n':
# add missing newline if not already present
f.write('\n')
f.flush()
f.seek(0)
lines = [line[:-1] for line in f]
或者更简单的替代方法是转换为writelines():
[line.rstrip('\n') for line in file]
甚至,虽然很不可读:
[line[:-(line[-1] == '\n') or len(line)+1] for line in file]
这利用了writelines()的返回值不是布尔值,但被评估为true或false的对象的事实。
writelines()方法实际上相当于:
def readl