2
1

More than 3 years have passed since last update.

Python open() mode='w' で FileNotFound になった話

Posted at

Python 3.x でファイルを扱う時は主に open(), with を使用するのだが、他の言語同様 書き込みモードというのが存在する。
ほかにも読み取り専用や追記モードなどもあるが割愛

sample1.py
file_path = 'sample1.txt'
with open(file_path, mode='w') as f:
    print('Hello Py!!')

同じ階層にファイルを作る場合、通常はこれで問題ないのだがWindows系の場合 文字数制限 が存在する
長過ぎるパス名にご用心 - AtFILE_Guide
Windows10 home 64Bit のパスの文字数制限解除 - マイクロソフト コミュニティ

そんな深い階層にフォルダ作って作業することなんて無いという方もいるかもしれないが、OneDrive for bussiness で個人のフォルダは結構深い階層に生成される(た気がする)

C:\Users\%username%\OneDrive - 株式会社〇〇〇〇〇〇\
うん、これ会社名とユーザ名が長くなければ普通にぶち当たらないな。。。

だが FileNotFoundError を生んでしまった。
ググってみても 直上のフォルダが存在しないから といった理由ばかり記載されておりこれは違うなぁってのしかなかった。
(もしかしたらあったのかもしれないが見落としてるかも)

ふと、そういえばWindowsってファイル名制約あったけ てことを思いファイル名文字数制限てのを見つけた。
そういや、いつも長いファイル名なんてつけないから忘れてた

例えばファイル名に日付情報を付加した場合(まさに今回)はファイル名が長くなるので注意が必要かもしれない。

ログ_株式会社〇〇〇〇〇〇〇〇〇〇〇〇様_〇〇〇〇〇〇拠点_設定変更_最終ログ_yyyymmdd.txtというファイルからshow run と show start抜き出すプログラム書いてて思ったことでした。
ログ株式会社〇〇〇〇〇〇〇〇〇〇〇〇様〇〇〇〇〇〇拠点設定変更最終ログyyyymmdd.txt_show running-config_yyyymmdd.txt
ログ
株式会社〇〇〇〇〇〇〇〇〇〇〇〇様〇〇〇〇〇〇拠点設定変更_最終ログ_yyyymmdd.txt_show startup-config_yyyymmdd.txt

ちなみにpathlib.touch() やってみても error してた

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1