pythonで外部メディアにファイルを書き込みした際、
書き込みした結果同じ名前のフォルダが出来上がっていた。
中身はどうやら片方は外部メディアでもう一方は、内部ディスクとして認識されている。

原因:マウント前に書き込み処理が走っている
原因としては、外部メディアをマウント完了する前に書き込み処理が行われているのが原因でした。 書き込み処理の一貫で、フォルダが無ければ作成する処理も入れていたのが仇となりました。 対応としては、メディアをマウントしてから処理を開始すれば問題ありません。
systemd なら下記のようにsystemdでmountするサービスを作ります。
[Unit] Description=USB drive mount After=local-fs.target [Mount] # USBドライブのUUIDを指定 What=UUID=xxxx-xxxx Where=/mnt/usb Type=vfat Options=defaults,noatime,x-systemd.automount
このサービスのあとに、書き込み処理を行うようにsystemdに登録すれば大丈夫です。
After =#上のサービス名
面倒な場合は、書き込み開始の前に30秒くらい待ちましょう。
なお、製品開発の場合は、秒数で待つのはおすすめしないです。
余談:ファイル名が悪い件
そもそも、ファイル名にピリオドが含まれていて不格好ではあるんですが。
ちなみに、こうしたフォルダ名は内部的に別のUUIDでつけられたフォルダ名で運用されていることが多いので、そちらを指定するほうが無難です。
ls コマンドで確認できます。
今回のフォルダは、内部的には下記のようなフォルダ名でした。
「8badbcfa-3f80-4fa0-ba48-7cbe7abf809a」
外付けメディアを購入したまま指して、自動でつけられた名前なんですけどね。
こういうエラーの原因となるような慣習はやめてほしい。。。
