在研究了我的问题(链接)之后,我发现它是由一个更简单的问题引起的。
当我向文件写入"\n"
时,我期望从文件中读取"\n"
。但在Windows中情况并非总是如此。
In [1]: with open("out", "w") as file:
...: file.write("\n")
...:
In [2]: with open("out", "r") as file:
...: s = file.read()
...:
In [3]: s # I expect "\n" and I get it
Out[3]: '\n'
In [4]: with open("out", "rb") as file:
...: b = file.read()
...:
In [5]: b # I expect b"\n"... Uh-oh
Out[5]: b'\r\n'
In [6]: with open("out", "wb") as file:
...: file.write(b"\n")
...:
In [7]: with open("out", "r") as file:
...: s = file.read()
...:
In [8]: s # I expect "\n" and I get it
Out[8]: '\n'
In [9]: with open("out", "rb") as file:
...: b = file.read()
...:
In [10]: b # I expect b"\n" and I get it
Out[10]: b'\n'
以更有组织的方式:
| Method of Writing | Method of Reading | "\n" Turns Into |
|-------------------|-------------------|-----------------|
| "w" | "r" | "\n" |
| "w" | "rb" | b"\r\n" |
| "wb" | "r" | "\n" |
| "wb" | "rb" | b"\n" |
当我在我的Linux虚拟机上尝试时,它总是返回 \n。我在Windows该怎么做?
编辑:这对于pandas库尤其成问题,它似乎使用“w”将DataFrame
写入csv
, 并使用“rb”读取csv
。请参阅顶部链接的问题以获取示例。