Python的新手,并且正在在线观看视频教程,以使用VS Code学习Python。 以下代码用于生成文本文件:
#
# Read and write files using the built-in Python file methods
#
def main():
# Open a file for writing and create it if it doesn't exist
f = open("textfile.txt", "w+")
# Open the file for appending text to the end
# write some lines of data to the file
for i in range(10):
f.write("This is line " + str(i) + "\r\n")
# close the file when done
f.close()
# Open the file back up and read the contents
if __name__ == "__main__":
main()
运行它,我得到:
This is line 0
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
导师的输出为:
This is line 0
This is line 1
This is line 2
This is line 3
This is line 4
This is line 5
This is line 6
This is line 7
This is line 8
This is line 9
我尝试使用“ \ r \ n”进行实验,当使用其中一个(如“ \ r”或“ \ n”)时,我得到了正确的响应,但同时使用它们,结果是多余的行。
我已经读到某个地方说Windows和Mac在这方面有区别,但是我找不到关于这些字符是什么以及它们做什么的全部细节。
编辑:我正在使用Windows,教师正在使用Mac
答案 0 :(得分:4)
换行符控制通用换行符的工作方式(仅适用于文本 模式)。可以是“无”,“”,“ \ n”,“ \ r”和“ \ r \ n”。它作为 如下:
在输入时,如果换行符为“无”,则启用通用换行符模式。 输入中的行可以以'\ n','\ r'或'\ r \ n'结尾,这些是 在返回给调用者之前将其翻译为“ \ n”。如果是 '', 通用换行模式已启用,但行尾返回到 呼叫者未翻译。如果它具有其他任何法律价值, 输入行仅由给定的字符串终止,并且该行 结尾将不翻译地返回给调用方。
在输出中,如果换行符为None,则任何写入的'\ n'字符都将转换为系统默认的行分隔符os.linesep。如果 换行符是”,不进行翻译。如果换行符是 其他合法值,则将任何写入的'\ n'字符翻译为 给定的字符串。
这意味着自python 3.2起,任何换行符(在您的情况下为\ r和\ n)都转换为os.linsep
,它是操作系统的行分隔符
来源是python文档:https://docs.python.org/release/3.2/library/functions.html#open
答案 1 :(得分:3)
在Windows上,当以文本模式(默认)打开文件时,将\ n转换为\ r \ n,因此写入\ r \ n会为您\ r \ r \ n。仅在可移植的文本模式下写入\ n,并且使用了操作系统的正确行尾。
答案 2 :(得分:-1)
您只需要将打开的行更改为:
f = open("textfile.txt", "w+",newline='')
如果您使用的是python 2.x,请执行以下操作:
f = open("textfile.txt", "wb+")