Python 3.x Python中换行符参数和行终止符参数的区别和用途是什么?
我在处理CSV文件对象时,在CSV writer对象中遇到了行终止符方言 首先,它的目的是什么?我不太明白它是做什么的,或者不使用时会发生什么 其次,在获取文件对象(不是CSV writer对象)时,我遇到了一些使用Python 3.x Python中换行符参数和行终止符参数的区别和用途是什么?,python-3.x,csv,functional-programming,arguments,file-handling,Python 3.x,Csv,Functional Programming,Arguments,File Handling,我在处理CSV文件对象时,在CSV writer对象中遇到了行终止符方言 首先,它的目的是什么?我不太明白它是做什么的,或者不使用时会发生什么 其次,在获取文件对象(不是CSV writer对象)时,我遇到了一些使用newline参数的示例。它的目的或用途是什么?它与lineterminator参数有何不同 我有两段代码使用下面的任何一个参数,它们的工作原理完全相同。我不完全理解Python文档中关于方言和这两个参数的内容 **注意:不使用任何参数时的区别仅在写入文件时存在(这是文件处理函数的一
newline
参数的示例。它的目的或用途是什么?它与lineterminator
参数有何不同
我有两段代码使用下面的任何一个参数,它们的工作原理完全相同。我不完全理解Python文档中关于方言和这两个参数的内容
**注意:不使用任何参数时的区别仅在写入文件时存在(这是文件处理函数的一部分)。代码显示读取位(对错误表示歉意)
使用行终止符参数:
# Handles reading and modifying CSV files
def FileHandler(targetFile, mode, data=[]):
content = []
with open(targetFile, mode) as file:
file_reader = csv.reader(file, lineterminator="\n")
for line in file_reader:
content.append(line)
num_of_lines = len(content)
file.close()
return content, num_of_lines
# Handles reading and modifying CSV files
def FileHandler(targetFile, mode, data=[]):
content = []
with open(targetFile, mode, newline="\n") as file:
file_reader = csv.reader(file)
for line in file_reader:
content.append(line)
num_of_lines = len(content)
file.close()
return content, num_of_lines
使用换行符参数:
# Handles reading and modifying CSV files
def FileHandler(targetFile, mode, data=[]):
content = []
with open(targetFile, mode) as file:
file_reader = csv.reader(file, lineterminator="\n")
for line in file_reader:
content.append(line)
num_of_lines = len(content)
file.close()
return content, num_of_lines
# Handles reading and modifying CSV files
def FileHandler(targetFile, mode, data=[]):
content = []
with open(targetFile, mode, newline="\n") as file:
file_reader = csv.reader(file)
for line in file_reader:
content.append(line)
num_of_lines = len(content)
file.close()
return content, num_of_lines
正如政府所说:
方言。行终止符
用于终止写入程序生成的行的字符串。它默认为'\r\n'
注意:读卡器硬编码为将'\r'
或'\n'
识别为行尾,并忽略行终止符。这种行为将来可能会改变
它指定写入CSV的每行末尾使用的字符。Linux文件通常只有换行符(\n
),Windows文件通常有回车符加换行符(\r\n
)
由于csv
模块写入自己的行尾,因此为使用reader
和writer
打开的文件必须使用newline='
打开。文件中也解释了这一点,文件中还有以下脚注:
脚注
[1] 如果未指定newline=''
,则嵌入在带引号字段中的新行将无法正确解释,并且在使用\r\n
linendings on write的平台上,将添加额外的\r
。指定换行符=''
应该总是安全的,因为csv
模块有自己的(通用)换行符处理
在文件中:
换行符
控制通用换行符模式的工作方式(它仅适用于文本模式)。它可以是None
,'
,'\n'
,'\r'
和'\r\n'
。其工作原理如下:
- 从流读取输入时,如果
换行符
为无
,则启用通用换行符模式。输入中的行可以以'\n'
、'\r'
或'\r\n'
结尾,这些行在返回给调用方之前被翻译成'\n'
。如果是”
,则启用通用换行符模式,但行尾将返回给调用方,而不进行翻译。如果它具有任何其他合法值,则输入行仅由给定的字符串终止,并且行尾未经翻译返回给调用方
- 将输出写入流时,如果
换行符
为无
,则写入的所有'\n'
字符将转换为系统默认的行分隔符os.linesep
。如果换行符是'
或'\n'
,则不会进行转换。如果换行符是任何其他合法值,则写入的任何'\n'
字符都将转换为给定字符串
将代码发布为代码格式的文本,而不是图像链接。另外,这不是一种“线路终止方言”,你可以只看文档。而且,代码并不是作者想要的意思。嗨,我现在不得不用我的手机,文本中没有代码。因此,链接到图像。正如我清楚地提到的,我不明白这些文件的意思。因此我把它贴在这里。这是一个文件处理函数的一部分,它有读写器。对不起,我错把读者剪断了。区别只是当我写入文件时。那么,您能详细介绍一下它的功能和区别吗?谢谢,我忘记了open()内置函数的文档。我还做了一些测试。因此,根据open()的doc,如果newline='',它应该返回未翻译的行尾。但是,当我将函数与open(“file.csv”,newline='')一起使用时,会得到csv.reader给出的每一行(“file.csv”),并用另一个值(例如:user0==user0\r\n)检查其中一个值。它说这是真的!注意:user0是用户输入的值,user0\r\n是应该从文件中读取的值。那么这是怎么发生的呢?CSV模块是否返回行尾?@Vishal“untranslated”表示您得到了文件中的内容。如果文件包含\r\n,则当您使用打开
读取文件时,\r\n将看到该文件<但是,code>csv.reader
应该读取文件的一行,并根据方言设置将其处理为列表。例如,如果行是a、b、c\r\n
,csv.reader
将返回['a','b','c']
。因此,如果没有一个例子,我不确定你在说什么。如果仍不清楚,请提出新问题。