Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.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-在文件输出中用回车符/换行符替换换行符_Python - Fatal编程技术网

Python-在文件输出中用回车符/换行符替换换行符

Python-在文件输出中用回车符/换行符替换换行符,python,Python,首先,我写python才几个月 我有一个txt文件需要处理。为了正确处理,每行必须以“\r\n”结尾 然而,情况并非总是如此,有时它只包含“\n”(换行符) 因此,我需要检查文件,如果缺少“\r\n”,请将“\n”替换为“\r\n” 我试过几种方法,但都失败了 首先,我尝试了以下方法: with open("initial_file.txt",'rb') as file_content: #1253 is a Windows code page used to write modern Gr

首先,我写python才几个月

我有一个txt文件需要处理。为了正确处理,每行必须以“\r\n”结尾

然而,情况并非总是如此,有时它只包含“\n”(换行符)

因此,我需要检查文件,如果缺少“\r\n”,请将“\n”替换为“\r\n”

我试过几种方法,但都失败了

首先,我尝试了以下方法:

with open("initial_file.txt",'rb') as file_content:
  #1253 is a Windows code page used to write modern Greek.
  mycon = file_content.read().decode('cp1253')

if (mycon.count("\r\n") == 0) and (mycon.count("\n") > 0):
  with open("destination_file.txt",'w') as file_replace:
     file_replace.write(mycon.replace("\n", "\r\n").encode('cp1253'))
但不是将“\n”替换为“\r\n”我得到了“\r\n”

所以我尝试了另一种方法:

rf = open("initial_file.txt", 'rb')
wf = open("destination_file.txt",'wb')
mycon = rf.read().decode('cp1253')
if (mycon.count('\r\n') == 0) and (mycon.count('\n') > 0):
    for line in rf:
        newline = line.rstrip('\n')
        wf.write(newline).encode('cp1253')
        wf.write('\r\n').encode('cp1253') 
它第一次起作用,然后就没有了


我不确定我做错了什么,我希望能得到一些帮助。

如果没有编码舞蹈

with open("file.txt") as rf, open("out.txt", "w") as wf:
    for line in rf:
        wf.write("%s\r\n" % line.strip())
上下文管理器很酷,不是吗。

您可以从中使用该功能。在这里,您可以显式地指定换行模式。在此示例中,每个
'\n'
都被转换为
'\r\n'

from io import open
with open("test.txt", "w+", newline="\r\n") as f:
    f.write(u"Hello World\n")
以下是文件内容(
0d 0a
对应于
\r\n

$ hexdump -C test.txt
00000000  48 65 6c 6c 6f 20 57 6f  72 6c 64 0d 0a           |Hello World..|
要将现有文件转换为使用特定的行终止模式,可以在利用该方法的同时读取行。然后可以使用为输出文件显式指定的行终止符写入行

from io import open
with open(infname, 'r') as inf, open(outfname, "w+", newline="\r\n") as outf:
    outf.writelines(inf)
供参考:


您正在以二进制模式读取输入,但以文本模式写入输出。文本模式自动将换行符转换为平台特定的换行符序列。由于CP1253具有与ascii和unicode相同的换行符和回车符,因此您可以完全删除字符串替换码和编码/解码码y、 如果不是这样,您可能希望以二进制模式打开输出或进行其他更改

with open("file.txt", 'rb') as rf, open("out.txt", "w") as wf:
    wf.writelines(rf)

我的第一个代码示例也有同样的问题。由于某些原因,我无法理解它将“\n”替换为“\r\r\n”如果您不确定文件是否有回车符,这个答案会起作用,这很酷。谢谢,工作得很好!!我会确保阅读您的所有参考资料。