我正在尝试将编码数据写入文件,并用换行符分隔每次运行。但是,这样做时,每次运行之间都有一个空行-如下所示。
仅在读取文件时才使用.rstrip()/。strip(),而且显然在写入文件时不能直接使用,因为它将所有数据写入一行。
cFile = open('compFile', 'w')
for i in range(num_lines):
line = validLine()
compressedFile.write(line + "\n")
cFile.close()
cFile = open('compFile', 'r')
for line in cFile:
print(line)
# Empty space output:
023
034
045
# Desired output:
023
034
045
答案 0 :(得分:1)
如果您查看自己的文本文件,我想您已经按照自己的意愿做了。
请注意,python也会在文件末尾读取\ n,而print()在打印行的末尾换行。
对于您而言,这意味着您的文件应类似于
023 \ n
034 \ n
045 \ n
打印时,您首先读取023 \ n,然后像python使用print()函数一样,将\ n附加到行中。
然后您将在控制台中看到023 \ n \ n。但是在文件中,您拥有想要的东西。
如果只想打印而不换行,可以使用
import sys
sys.stdout.write('.')
答案 1 :(得分:0)
您可以使用
for i in range(num_lines):
line = validLine()
compressedFile.write(line.strip() + "\n")
# ^^^
cFile.close()
主题外,但可以考虑另外使用with ()
。
答案 2 :(得分:0)
仅在读取文件时才使用.rstrip()/。strip(),而且显然在写入文件时不能直接使用,因为它将所有数据写入一行。
这是一个误解。如果您需要编写一系列字符串,其中 some 可能附加了换行符,那么使用.rstrip()
就是正确的工具:
with open('compFile', 'w') as cFile:
for i in range(num_lines):
line = validLine().rstrip("\n") # remove possible newline
compressedFile.write(line + "\n")
请注意,如果所有行都已附加换行符,则不必添加更多换行符。只需将字符串直接写入文件,无需剥离:
with open('compFile', 'w') as cFile:
for i in range(num_lines):
line = validLine() # line with "\n" newline already present
compressedFile.write(line) # no need to add a newline anymore
接下来,您正在从文件中读取带有换行符的行 ,然后使用print()
打印它们。默认情况下,print()
添加另一个换行符,因此您最终得到的是双倍行距;您的输入文件包含023\n034\n045\n
,但是先打印每一行('023\n'
,然后'034\n'
,然后'045\n'
),然后添加换行符,然后将023\n\n034\n\n045\n\n
写出stdout
。
在打印时剥离该换行符,或者通过给其一个空的print()
参数来告诉end
不要添加自己的换行符:
with open('compFile', 'r') as cFile:
for line in cFile:
print(line, end='')