我需要制作一个接收整数并将其存储在文件中的程序。当它有 15(或 20,确切的数字无关紧要)时,它将覆盖它写入的第一个。它们可能在同一行,也可能在新行中。该程序从传感器读取温度,然后我将在带有 php 图表的站点上显示它。
我想过每半小时写一个值,当它有 15 个值并且有一个新值出现时,它会覆盖最旧的值。
我在保存值时遇到了麻烦,我不知道如何将列表保存为带有新行的字符串,它保存了双新行,我是 python 新手,我真的迷路了。
这不起作用,但它是我想做的“样本”:
import sys
import os
if not( sys.argv[1:] ):
print "No parameter"
exit()
# If file doesn't exist, create it and save the value
if not os.path.isfile("tempsHistory"):
data = open('tempsHistory', 'w+')
data.write( ''.join( sys.argv[1:] ) + '\n' )
else:
data = open('tempsHistory', 'a+')
temps = []
for line in data:
temps += line.split('\n')
if ( len( temps ) < 15 ):
data.write( '\n'.join( sys.argv[1:] ) + '\n' )
else:
#Maximum amount reached, save new, delete oldest
del temps[ 0 ]
temps.append( '\n'.join( sys.argv[1:] ) )
data.truncate( 0 )
data.write( '\n'.join(str(e) for e in temps) )
data.close( )
我迷失了 ''.join 和 \n 等...我的意思是,我必须使用 join 来使列表保存为字符串,而不是使用 ['', '']。如果我使用'\n'.join,我认为它会节省双倍空间。先感谢您!