Python无法正常使用回车符换行

问题描述

根据python的官方文档,3.x及更高版本的版本删除了用于从文件读取的“ U”参数,并且认情况下包括对不同回车符的通用支持。但是,这不适用于最新版本(3.8.6)。

file1 = open('cube_demo.gcode','rt') 
Lines = file1.readlines() 

  
count = 0
for line in Lines: 
    print(line)
    count += 1

我希望输出类似于以下内容

G92 E0 ; reset extrusion distance
; Filament gcode
M104 S235

G1 Z0.250 F10800.000 ; move to next layer (0)
G1 E-7.00000 F3300.00000 ; retract
G92 E0 ; reset extrusion distance

但是我得到了

G92 E0 ; reset extrusion distance

; Filament gcode

M104 S235


G1 Z0.250 F10800.000 ; move to next layer (0)

G1 E-7.00000 F3300.00000 ; retract

G92 E0 ; reset extrusion distance

为什么会这样?根据{{​​3}},python现在支持通用换行符。另外:How can I remove carriage return from a text file with Python?

那我想念什么?我不想剥离任何内容,因为这将需要我先弄清楚每个文件使用哪个回车符。由于此脚本应可在每个OS上使用,因此这是必需的。

那我如何才能得到这种普遍支持呢?

很奇怪,我看到很多话题,与此非常相似。但是,这些线程实际上都没有达到该线程目标的1:1。怎么会?例如,有些人想删除所有换行符,而另一些人则要删除。普遍支持功能不起作用怎么会没有问题呢?

解决方法

这样做的原因是readlines()返回原样的行,这意味着返回的列表项还将在末尾包括新行:

>>> import io
>>> io.StringIO('line_1\nline_2').readlines()
['line_1\n','line_2']

插入第二行,其默认值为print()end='\n'自变量。