ラズベリーパイに温度センサー(HS18B20)を使用しています。 1秒ごとに温度がスプレッドシートに記録され、whileループを使用してdropboxに送信されます。 ctrl + cが押されるまで、これは永久に実行されます。 Dropboxにアップロードするには、別のファイルと同じファイル名を使用することはできません。プログラムはエラーを出して停止します。明らかに、私は単に毎回違う名前のファイルを作成することはできますが、Dropboxで何百もの異なるファイルを扱うためには、Dropboxのファイルを削除してすぐに新しいスプレッドシートをDropboxにアップロードします。 1つのことを除いてこの技術に問題はありません...Python終了時Trueループ
ファイルが削除された直後、およびファイルのアップロード中にプログラムがctrl + cで停止した場合、新しいファイルはアップロードされませんドロップボックスでのみ削除されます(ローカル.xlsファイルは決して削除されず、置き換えられます)。
toc = time.strftime("%b %-d, %Y. %H:%M:%S")
dbx.files_delete('/Temperature Data ' + toc + '.xls')
with open(time.strftime("%m_%d_%Y") + '.xls', "rb") as f:
dbx.files_upload(f.read(), '/Temperature Data ' + toc + '.xls')
print("Uploaded to Dropbox")
私はフェールセーフを設定すると思ったが、それでも動作しません。
ここに私のコードのスニペットがあります。
def signal_handler(signal, frame):
signal interrupted
interrupted = True
signal.signal(signal.SIGINT, signal_handler)
interrupted = False
...
while True:
print("Temperature Taken")
a += 1
c += 1
if temp_f < input_bad:
ws.write(a,0,temp_f)
ws.write(a,1,time.strftime("%H:%M:%S %p"))
ws.write(a,2,"YES")
while c % 6 == 0:
c += 1
dbx.files_delete('/Temperature Data ' + toc + '.xls')
with open(time.strftime("%m_%d_%Y") + '.xls', "rb") as f:
dbx.files_upload(f.read(), '/Temperature Data ' + toc + '.xls')
print("Uploaded to Dropbox")
if interrupted:
print("Saving...")
dbx.files_delete('/Temperature Data ' + toc + '.xls')
with open(time.strftime("%m_%d_%Y") + '.xls',"rb") as f:
dbx.files_upload(f.read(), '/Temperature Data ' + toc + '.xls')
quit()
それは温度の読みを取っている間、私はプログラムC + CTRL場合は、問題ありません!プログラムはc%6 == 0になるまでループを終了してから、保存して終了します。
私は+プログラムCその節約しながら、はい...
をCTRL場合はその貯蓄私は(「プログラムを閉じないでください」)印刷できませんでしたが、私はこの馬鹿を証明したいと思います。
ヒント?ありがとう!
また、['WriteMode.overwrite'](https://dropbox-sdk-python.readthedocs.io/en/latest/moduledoc.html#dropbox.files.WriteMode.overwrite)または[' WriteMode.update'](https://dropbox-sdk-python.readthedocs.io/en/latest/moduledoc.html#dropbox.files.WriteMode.update)を['files_upload']の' mode'パラメータに追加します(https ://dropbox-sdk-python.readthedocs.io/en/latest/moduledoc.html#dropbox.dropbox.Dropbox.files_upload)を使用して、この可能性を完全に回避します。 (つまり、既存のファイルを削除する必要はありません) – Greg