为什么[line in open(" text.txt")]会产生换行符?

时间:2016-01-22 14:05:54

标签: python file readlines design-rationale

(注意:我并没有试图改变任何事情 - 只是想了解)

查看在python中读取文件的解决方案,每次都应该删除换行符:

In [5]: [line for line in open("text.txt", "r")]
Out[5]: ['line1\n', 'line2']

虽然直觉行为(判断一些que stions对这个问题的普及程度)会产生剥离的线条吗?

这背后的理由是什么?

- 编辑 -

授予:'直观'是主观的。然而,一致的'则不那么重要。显然,'线' "line1\nline2".splitlines()中的概念与iter(open("text.txt"))

处理的概念不同
>>> assert(open("text.txt").readlines() == \
... open("text.txt").read().splitlines())
AssertionError

非常确定人们会被此抓住。

所以我错了:也许我的直觉与splitlines解释一致:分裂的东西不应该包括分隔符。也许我的问题的答案不是技术问题,而是更像是#34;因为PEP-xyz被不同的人批准而不是PEP-qrs"。也许我应该把它发布到一些python语言论坛。

1 个答案:

答案 0 :(得分:1)

嗯,这是一条线。通过以字符\n结尾来定义一条线。如果一系列字符没有以\n(或EOF)结尾,我们怎能知道它是一条线?

"hello world"
"hello world\n"

第一个不是一条线,如果我们打印两次,我们可能会得到

hello worldhello world

Wile第二个版本会给我们

hello world
hello world