Python3 - 将JSON数据转储到文件的倒数第二行

时间:2015-08-11 15:01:47

标签: python

我必须承认我对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”。

0 个答案:

没有答案