我环顾四周并尝试了几种选择,但我无法正常工作。我有一个创建文件的代码,并将用户输入追加到用户指定的行中。
将第二个输入(顺便说一下,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))
对于那些不太擅长编写代码的人,我想得到一个可以理解的答案。
答案 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
代码段)应该可以帮助您。