Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
由分隔符确定的Python读取文件\r\n_Python_File_Newline - Fatal编程技术网

由分隔符确定的Python读取文件\r\n

由分隔符确定的Python读取文件\r\n,python,file,newline,Python,File,Newline,我只想读取由换行符分隔符\r\n确定的文件,\r\n并且\r\n应该被视为字符串的一部分,而不是行尾 我试着用 open('file.txt', 'rU').read().split('\r\n') 但打开文件后,我看不到任何字符,\r所以可能必须使用不同的标志或不同的方式打开文件 有什么办法解决这个问题吗 编辑:很抱歉没有指定python的版本,我使用的是版本3。用“rb”打开文件: open('file.txt','rb').read().split('\r\n') 我发现创建一个只有CR

我只想读取由换行符分隔符\r\n确定的文件,\r\n并且\r\n应该被视为字符串的一部分,而不是行尾

我试着用

open('file.txt', 'rU').read().split('\r\n')
但打开文件后,我看不到任何字符,\r所以可能必须使用不同的标志或不同的方式打开文件

有什么办法解决这个问题吗


编辑:很抱歉没有指定python的版本,我使用的是版本3。

用“rb”打开文件:

open('file.txt','rb').read().split('\r\n')

我发现创建一个只有CR和LF的文本文件有点困难,但Notepad++帮助了我

关于这一内容:

CRLF\r\nCR\rLF\nCRLF\r\n

使用打印打开('file.txt','rb').read().split('\r\n')

我得到了这个输出:


['CRLF'、'CR\rLF\nCRLF'、''']

我认为\r\n在以文本模式读取文件时被转换为\n

我不是100%确定你想要实现什么,但在我看来,你想要做到:

with open("file.txt", "rU") as f:
    return f.readline()
这将读取一行(包括\n)。如果要将行作为列表,请执行以下操作:

with open("file.txt", "rU") as f:
    return f.readlines()
或者您可以只在f上迭代。

(使用二进制模式)在Python2中工作得很好,但在Python3中需要进行调整,因为以二进制方式打开文件会将其内容返回为
字节,而不再是
str

此外,如果文件很大,那么一次读取整个文件可能是内存方面的问题

在Python3中,可以将
换行符
参数传递给
打开
,这样它就可以在该参数上而不是默认值上拆分

with open("temp.txt","r",newline="\r\n") as f:
    for line in f:
       ....
line
包含文本以及结尾的
\r\n
(使用
line=line.rstrip()
删除)


如果行中有
\n
字符(不在
\r
后面),它们将作为普通字符读取。

好吧,这不是二进制类型的文件,所以当我尝试这样做时,我有一个错误:TypeError:需要一个类似字节的对象,而不是'str',我使用的是Python 2.7-您没有指定Python 3。它可以工作,但您必须使用
。read().decode().split…
例如。我有这样的文件:第一行\r\n第二行\r\n第三行\r\n作为拆分文件的结果,我应该有这样的输出:1。String=“第一行第二行”2。String=“Third line”谢谢,这也很有效,但我认为我标记的解决方案更好(代码更少:))无论您选择什么(加上您解决了它,这要感谢我对
解码的评论,这甚至不在答案中)。此外,尝试用另一个解决方案打开一个30Gb的文件,并在开始时执行完整的读取+拆分:)无论如何,有趣的问题:)