ゴリラ向け動画サイト「ウホウホ動画」にありがちなこと

ラズパイでCSVデータを日々400行程保存をしています。
定量で自動削除する方法をどなたか教えて頂けないでしょうか?
6000行まで溜まったら最初の1行目が削除され、全体が上方にシフトする様な。
と、CSVの行は有限ですよね?限界が来たらどうなりますか?
最新データは最終行に、1行目がところてん方式で削除されますか?
それともなにかしらエラーが出てしまうのでしょうか?

A 回答 (12件中1~10件)

os.remove(dir_path + files[0])


がtest_file_16.pyの最後の行でしょうか。
そうであれば、その後に、
No11のスクリプトを追加すれば、良いと思います。
    • good
    • 1
この回答へのお礼

助かりました

頂いたプログラムで完璧でした!
ラズパイや、Pythonの質問にレスポンスが少ない中ほんとに助かりました!
ありがとうございました!
またいつかよろしくお願い申し上げます。

お礼日時:2021/12/06 17:22

もし、test_file_16.pyの提示ができない場合は、だめもとで、


以下のスクリプトを組み込んでください。
https://ideone.com/9l3i2a
起動パラメータを受け取る個所を削除し、直接、log.csv及び6000を指定するように修正しました。

その場合は、念のため、test_file_16.pyのバックアップをとっておいてください。
    • good
    • 1
この回答へのお礼

ありがとう

出来ました!!
自宅で簡単なcsv書き込みのプログラムに入れてしっかり動いてくれました!!
ありがとうございます!!
明日会社で実装しますので、その後ベストアンサーで
またお返事させていただきます!
ほんとにありがとうございました!
なにぶん初心者ですので色々とご迷惑をお掛けしました。
また悩んだ時にはお力添えをお願いできましたらと思います。
ありがとうございます。

お礼日時:2021/12/05 16:41

>/home/pi/Desktop/OR/test_file_16.py


>の中にコードを追記するかたちにしたいのですが、
>頂いたコードをごっそり入れてしまえば良いでしょうか?

test_file_16.pyに組み込めるかどうかは、test_file_16.pyの内容を見てみないと何とも言えません。
また、組み込むにしても、起動パラメータを取得している個所は削除する必要があるので、手直しが必要です。したがって、そのままごっそり入れた場合は、正しく動作しません。

test_file_16.pyの内容を提示可能であれば、その内容をみて、こちらで判断することは可能です。
    • good
    • 1
この回答へのお礼

ご親切なご回答ありがとうございます!
この条件分岐の部分でいけませんか?
全文見て頂きたいのですが、500行を超えてまして、、、。
if white_area_O > 900
 date = datetime.now().strftime("%Y%m%d_%H%M%S")
cv2.imwrite("/home/pi/Desktop/OR/OK/oring_OK_"+date+".jpg",img)
result = "OK"
result = date + "," + result + "," + str(white_area_O) + "," + str(white_area_P)
result = result.split(',')
with open('/home/pi/Desktop/OR/log.csv', 'a') as f:
writer = csv.writer(f)
writer.writerow(result)
f.close()
print("loggging done, see log.csv.")

if len(files) >= 6000:
files.sort()
os.remove(dir_path + files[0])
こんな感じなんですがどうでしょうか?
ネストがおかしいですが。。。

お礼日時:2021/12/04 20:43

>私の使用しているcsvファイルは”log”と言う名前です。


>3行目の部分をlogと6000に入替えれば良いのですか?

スクリプトを実行するときに、起動パラメータとして指定します。
このスクリプト名をsample.pyとすると
python sample.py /home/pi/Desktop/OR/log 6000
のように指定します。
logが /home/pi/Desktop/ORに格納されている場合です。
スクリプトの内容は一切変える必要はありません。

もし、log及び6000を起動パラメータとして指定するのではなく、
スクリプトに直接埋め込みたい場合は、その旨補足してください。
    • good
    • 1
この回答へのお礼

ありがとう

ご丁寧にありがとうございます!
私の説明が下手ですいません。。。
少し頭を整理させて下さい。
/home/pi/Desktop/OR/test_file_16.py
と言うスクリプトを実行すると、logと言う名の
csvファイルが日々400行程書込まれていきます。
そのパスは/home/pi/Desktop/OR/log.csvです。
出来ましたら
/home/pi/Desktop/OR/test_file_16.py
の中にコードを追記するかたちにしたいのですが、
頂いたコードをごっそり入れてしまえば良いでしょうか?
色々とご迷惑をお掛けしてしまってすいません!
なにぶん初心者でしてorg。

お礼日時:2021/12/03 21:23

>実務が多忙を極めており実装が暫く出来ない状況なので、まだこちらのスレッドを締切りたくないのですが、ベストアンサーで良いと思うのですが。



そのような状態でしたら、実装が終わって、動作確認後締め切ってください。動作確認時、不具合、不都合があればご指摘ください。
一応こちらで、動作確認済みですが、pythonは不慣れなので、不具合等があるかもしれません。
    • good
    • 1
この回答へのお礼

ありがとう

大変ご親切にありがとうございます!
この週末に自宅にて確認できましたら、と、思っておりますが、私の使用しているcsvファイルは”log”と言う名前です。
3行目の部分をlogと6000に入替えれば良いのですか?
すいません、初心者でしてorg。。。

お礼日時:2021/12/03 14:23

python3のスクリプトを下記にアップしました。


https://ideone.com/XSWSS4

python スクリプト名 CSVデータ名 6000
のように入力すると、6000行を超えた分が前から削除されてCSVデータ名に格納されます。元のファイルはCSVデータ名.backupとなって保存されます。
    • good
    • 2
この回答へのお礼

ありがとう

御回答ありがとうございます!
実務が多忙を極めており実装が暫く出来ない状況なので、まだこちらのスレッドを締切りたくないのですが、ベストアンサーで良いと思うのですが。
わざわざ書いて下さったのですか?

お礼日時:2021/12/02 14:24

すみません。

「perl かrubyなら可能です。」と書いたのは、
perl かrubyのスクリプトで良いなら私が提供可能です、という意味です。
ラズパイでperlかrubyが使えるかは、
perl -v
ruby -v
のコマンドを打ってみてください。
それらがインストールされているなら、
ruby -v
ruby 2.7.2p137 (2020-10-01 revision 5445e04352) [x86_64-linux]

perl -v
This is perl 5, version 16, subversion 3 (v5.16.3) built for x86_64-linux-thread-multi
(with 33 registered patches, see perl -V for more detail)

のようなバージョンが表示されます。
    • good
    • 1

念のため確認です。


スクリプトでCSVデータを更新するときに、ラズパイ側でそのCSVファイルをオープンしていると、スクリプトが正しく動作しません。
スクリプト実行時、ラズパイ側でCSVデータを開放していることが保障されますでしょうか。
    • good
    • 2
この回答へのお礼

丁寧なご回答ありがとうございます!
ラズパイでPythonとC言語以外使えるのですか?
すいません初心者なもので、よくわからず。。。
CSV内に漢字データはありません。アルファベット及び数字です。
ラズパイでCSVデータの書き込みをしているので常に開放というわけにはいかないプログラムとなっています。。。
こちらは写真データが6000件溜まったら一番古いファイルを1件消去する
というプログラムなんですが、この様なかたちで出来るのかなぁと思ってはいるのですが。。。
dir_path = "/home/pi/Desktop/OR/OK"
files = os.listdir(dir_path)
if len(files) >= 6000:
  files.sort()
os.remove(dir_path + files[0])

お礼日時:2021/11/30 04:32

誤記訂正です。


誤:従って、ファイル名がsampl.csv とすれば
正:従って、ファイル名がsample.csv とすれば
    • good
    • 2

>言語はPythonが良いです。


perl かrubyなら可能です。

>6000行まで溜まったら最初の1行目が削除され、全体が上方にシフトする様な。

この仕様で作りたいと思います。
ファイル名 と 最大行数 を指定し、
そのファイルが最大行数を超えていれば、超えた分の行数を前から削除し、
残りを指定ファイルに書き込みます。元のファイル名は、ファイル名.backupの名称に変更されます。

従って、ファイル名がsampl.csv とすれば
スクリプト名 sample.csv 6000
のように入力します。
上記の仕様でよろしいでしょうか。

念のため確認ですが、CSVファイル中に漢字のデータはありますか。
ある場合、その文字コードはなんでしょうか。
    • good
    • 2

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!