Python 3.x Python中换行符参数和行终止符参数的区别和用途是什么?

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文档中关于方言和这两个参数的内容 **注意:不使用任何参数时的区别仅在写入文件时存在(这是文件处理函数的一

我在处理CSV文件对象时,在CSV writer对象中遇到了行终止符方言

首先,它的目的是什么?我不太明白它是做什么的,或者不使用时会发生什么

其次,在获取文件对象(不是CSV writer对象)时,我遇到了一些使用
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']
。因此,如果没有一个例子,我不确定你在说什么。如果仍不清楚,请提出新问题。