前提
ラズベリーパイ4にて、Pytohn3にでプログラムを作成しています。
一日に一回、本日の日付のテキストファイルを作成し、メールで送信します。
(朝にテキストファイル作成し、夜にメール送信)
手動(Thonnyからの実行ボタン、ターミナルからのコマンドでの実行)で作成後、動作を確認しています。
その後、systemd利用して、電源ON後に自動でプログラムが走るようになっています。
動作は全てOKなのですが、以下の問題点があります。
発生している問題
「自動起動時にGUI環境下で、フォルダを見た時に作成したテキストファイルが表示されない」
という現象が発生しています。(ターミナルでlsを打っても表示されません)
しかし、「ファイルは表示されないが、メールに添付して送信は出来ている」状態です。
上記の「手動」で実行するとキチンとテキストファイルが作成されます。
自動起動の場合のみ、ファイルが表示されません。
メール送信やファイル作成の時間設定を変更し、
1.ラズパイ起動->1分後にプログラム自動起動
2.この時にイニシャル処理で作成されているはずのテキストファイルが無い
2.5分後にメール送信完了(ファイルが無いとエラーで止まるはず+実際にメール受信している)
となっているので、動作は問題ありません。
が、ラズパイ上でファイルの内容が確認できないので不便です。
該当のソースコード
以下をモジュール化してメイン関数内にて使用しています。
以下の2パターンでテキストファイルを作成しています。
1.プログラム実行時のイニシャル設定時
2.一日に一回の指定時間時に
両方のパターンで問題が発生しています。
Pyton3
1# coding: UTF-8 2 3''' 4ファイル書き出し用のモジュール 5タイムスタンプ名のファイルを書き出す 6流れは 71.ファイル作成(適当な名称) 82.osモジュールの機能でリネーム 9''' 10 11import time 12import datetime 13import os 14 15''' 関数定義 ''' 16 17''' ######################### 18関数名:fmake_txtemp 19引数 :作成したいファイルのパス 20戻り値:なし 21機能 :空のtxtファイルを作成 22######################### ''' 23 24def fmake_txtemp(path): 25 with open(path,mode='w') as f: 26 f.write('') 27 28''' ######################### 29関数名:fmake_TimeStmp 30引数 :変更したいファイルパス 31戻り値:なし 32機能 :今日の日付が名称のtxtファイルを作成 33 リネーム機能を使っているので、先にファイルを作成しておく必要がある 34 形式はyyyymmdd.txt 35######################### ''' 36def fmake_TimeStmp(path): 37 now = datetime.datetime.now() 38 new = '{0:%Y%m%d}.txt'.format(now) 39 os.rename(path,new)
メインプログラム内で
#初期設定等 """ データ書き出し用ファイルの作成 """ Filepath = './init.txt' FW.fmake_txtemp(Filepath) FW.fmake_TimeStmp(Filepath) #メインループで while (True): # 00:01 FW.fmake_txtemp(Filepath) FW.fmake_TimeStmp(Filepath) # 23:59 メール送信
試したこと
ファイル作成時間、メール送信時間を調整し、上述の通り
「ファイルは表示されないが、メールに添付して送信は出来ている」
ことを確認しています。
*** ls -a の結果
pi@raspberrypi:/Leasemat $ ls -a/Leasemat $
. File_w_time.pyc SendMailATT.pyc save_ONpic
.. JudgeTime.py pycache send_email.py
CC.py JudgeTime.pyc modules send_email.pyc
Camera_Count.py MotionSensor.py rec_movie.py
Camera_Count.pyc MotionSensor.pyc rec_movie.pyc
File_w_time.py SendMailATT.py save_CNTpic
pi@raspberrypi:
回答1件
あなたの回答
tips
プレビュー