我必须承认我对Python很新鲜。我想要做的是在文本文件的结束行之前插入一个新的文本行。
我设法将一段代码拼凑在一起,检查文件是否存在,添加标题和结尾(如果不存在),检查条件以及是否满足,将数据附加到文件。问题是,我无法弄清楚如何在附加之前将光标设置在倒数第二行,这样文件结束线就会保持完整,数据被正确夹在中间。
if os.path.exists('DaneGPIO.json') == False:
with open ('DaneGPIO.json', 'a') as outfile:
outfile.seek(0,0)
outfile.write('{"status":[' + '\n')
outfile.seek(0,2)
outfile.write(']}')
outfile.close
with open ('DaneGPIO.json', 'rb') as filecount:
count=sum(1 for line in filecount)
while True:
for number in sensor:
precise = str(time.time())
head, sep, tail = precise.partition('.')
timestamp = time.strftime ("%Y-%m-%d %H:%M:%S")+"."+str(tail)
time.sleep(0.5)
previous_state = current_state
current_state = GPIO.input(number)
if current_state != previous_state:
new_state = "HIGH" if current_state else "LOW"
print("GPIO pin %s is %s" % (number, new_state))
with open('DaneGPIO.json','a') as outfile:
fieldnames = ("data","nrpinu","stan")
json.dump ({'nrpinu':number,'data':timestamp, 'stan': new_state}, outfile)
outfile.write ('\n')
outfile.close
简而言之,我想在json.dump发生前进入倒数第二行。
我遵循了Ashwini的建议:
Printing to the penultimate line of a file
但是他的解决方案给了我“不能做非零终端相对搜索”的消息 - 显然这种方法不适用于Python3。 非常感谢您的建议。
我的意思是如何在标题和文件结尾之间设置指针/光标,所以我可以在那个位置执行json.dump。我已经有了行数,我只是想在执行json.dump之前指向一行“count-1”。