如果文件中已经存在文本,如何添加两个换行符?

时间:2019-02-14 09:39:16

标签: python python-3.x

我环顾四周并尝试了几种选择,但我无法正常工作。我有一个创建文件的代码,并将用户输入追加到用户指定的行中。

将第二个输入(顺便说一下,str的列表)附加到文件中时,就会出现问题。新输入总是与最后一个输入在同一行开始。

例如,文件的输出将是:

input 1
input 1
input 1input 2
input 2
input 2

问题是第二个输入从第一个输入的最后一行开始,我希望它从换行开始。

我尝试了各种方法,例如让代码查看文件中是否存在readline / read()和(1),但我从未使它起作用。

当前,我代码的相关部分如下:

os.chdir(os.path.expanduser("~/Desktop/Sam's Calendar"))
with open(str(now.year) + '-' + str(month).zfill(2) + '-' + str(daterange).zfill(2) + '.txt', 'a+') as file:
        file.write('\n'.join(reminderdescriptionfull))

对于那些不太擅长编写代码的人,我想得到一个可以理解的答案。

4 个答案:

答案 0 :(得分:0)

尝试一下:

os.chdir(os.path.expanduser("~/Desktop/Sam's Calendar"))
with open(str(now.year) + '-' + str(month).zfill(2) + '-' + str(daterange).zfill(2) + '.txt', 'a+') as file:
        if reminderdescriptionfull:
             file.write("%s\n"%'\n'.join(reminderdescriptionfull))

答案 1 :(得分:0)

您在编写中缺少最后一个换行符。只需在with内添加一条额外的语句:

file.write('\n')

您应该发现问题已经消除。

答案 2 :(得分:0)

Join在reminderdescriptionfull中的行之间插入换行符,因此,在一个输入的末尾或另一个输入的开始处没有换行符。要变通解决此问题,您所要做的就是在写入文件时添加换行符,即

os.chdir(os.path.expanduser("~/Desktop/Sam's Calendar"))
with open(str(now.year) + '-' + str(month).zfill(2) + '-' + str(daterange).zfill(2) + '.txt', 'a+') as file:
        file.write('{}\n'.format('\n'.join(reminderdescriptionfull)))

答案 3 :(得分:0)

一种检查文件是否为空的方法是使用os.stat.st_size

import os
os.stat("file").st_size

但是,由于您已经打开了文件,因此您也可以尝试读取第一个字符并查看是否有任何内容:

with open("path/to/file", "a+") as file:
    if file.read(1):
        file.write('\n\n')
    # now the rest of your output

您提到您已经尝试检查file.read(),但是上面的代码段(和os代码段)应该可以帮助您。