所以我有一个文件.txt:
>>012345
>> (new line)
当我打电话时:
b=a.read(7)
print b
这会给我
012345
(with a newline here)
所以我看到它已经读取了接下来的 7 个字符,算上“ ”作为单个字符。 但是当我使用seek时,它似乎会处理“ “ 作为两个字符:
position = a.seek(-2,2)
b=a.read(1)
print b
这将打印一个新的空行而不是 5 个。
这2种方法对待“
\n
”有不同吗?
您不必自己处理这个问题。 Python 附带电池。 :-)
如果换行符困扰您,只需
read()
整个文件并使用 splitlines()
字符串方法;
In [21]: test = 'foo \nbar bla\n baz\r\n'
In [22]: test.splitlines()
Out[22]: ['foo ', 'bar bla', ' baz']
请注意,这只会删除行尾的空格。
在以下示例中,python 将其视为单个字符:
这是 UTF-8 文件中的示例字符串:
["1:b'MQ==':b'MQ==':b'MQ=='\n", "2:b'dGVzdG9zdGVyb25p':b'dXNlcg==':b'cGFzc3dvcmQ='\n"]
如果检查最后一行是否以换行符结尾,可以使用以下代码:
with open(filename, "r") as file:
lines = file.readlines()
print(lines)
if lines[-1][-1] == "\n":
print("Found new line character")
else:
print("No new line character found")
>>> Found new line character
Python 在列表中最后一项的最后一个索引处找到一个换行符。