30分ごとに写真を撮ってFTP経由で私のサーバーに送る遠隔タイムラプスカメラを構築しています。ラズベリーパイはそうのようなPythonスクリプトを経由して、カメラを制御ファイルを収集し、それらを介して送信されます:FTP接続が正常に終了し、ファイルがPythonでFTPにアップロードされたことを確認してください
while true
captureImages()
renameFiles(picID)
upload() #uploads any files and folders in the selected path
delete() #deletes the uploaded files from the pi
私の質問は、(OK作品)このupload
機能とそれに続くdelete
機能に関係しています
def upload():#sends the file to server
print ("connecting")
#ftp connection (server, user,pass)
ftp = ftplib.FTP('server','user','pass')
#folder from which to upload
template_dir = '/home/pi/captures/'
print ("uploading")
#iterate through dirs and files
for root, dirs, files in os.walk(template_dir, topdown=True):
relative = root[len(template_dir):].lstrip(os.sep)
#enters dirs
for d in dirs:
ftp.mkd(os.path.join(relative, d))
#uploads files
for f in files:
ftp.cwd(relative)
ftp.storbinary('STOR ' + f, open(os.path.join(template_dir, relative, f), 'rb'))
ftp.cwd('/')
二つのものです:ファイルはBOOL「のような、正常にアップロードされていることを確認する
方法UPLO (true/false) 'を指定して' remove '関数をトリガーするかどうかを指定します。
アップロードプロセスをスキップし、何らかの理由で接続が確立できない場合はファイルを削除しない方法です。タイムアウトと同様に、接続を確立しようとする10秒間のウィンドウで、「アップロード」と「削除」の両方をスキップしてファイルをローカルに格納し、whileループの次の反復で再度試行します。
ありがとうございました!
コードに誤りが発生します。 'upload'が失敗した場合、' delete'は呼び出されません。 –
その問題は、ループがその場合に壊れるため、カメラが撮影を停止することです。 – mrc
ループ内で例外をキャッチします。 –