Python で ファイルオープン時にOSError [Errno 22] が発生する場合の対処法

  • このエントリーをはてなブックマークに追加

teratail見てたら
OSError: [Errno 22] Invalid argument: '\u202aC:\Users\...(略)みたいなエラーが出る!
助けて!

みたいな質問があった。

解決策は、「ファイルのパスが正しく無いので、正しいパスを指定し直せ。」ということになる。

質問者としては「正しいんだけど?」みたいな感想が出ると思うが、Invalid argumentの右を見て欲しい。
あなたが指定しているのは C:\Users\ ではない。
\u202aC:\Users\を指定している。

あなたのPCには \u202aC:\Users\なんてパスが存在しないから正しく無い。

u202aってどうやって入力するんだ?

で、本題。

回答者的には、「お前はエラーメッセージも読めないのか?」としか思わないが、このu202aはどうやって入力したのかが気になった。

質問者もu202aを入力しようとしていないと思う。

調べたところ、プロパティから取得するとu202aが入力できる様だ。

試してみよう。

C:\testfile.txtを作成

短い方がわかりやすいと思うので、Cドライブ直下にtestfile.txtを作成した。

ちなみに、OSはWindows10。
操作は、標準のExplorerを使用した。

Explorerで対象のファイルを選択している状態で、上にあるメニュー(ホーム)の「パスのコピー」を選択すると以下が取得できる。(u202aは含まれない)

次に、対象のファイルを右クリックしてプロパティを開き、「全般」タブの「場所:」の右側を頑張って選択してコピーすると以下が取得できる。(u202aは含まれない)

次に、「セキュリティ」タブの「オブジェクト名:」の右側を頑張って選択してコピーすると以下が取得できる。

Webに直接記載するとわからないが、秀丸に貼り付けたところ、以下の通りになった。

これで謎が解けたが、質問者はなんでこんな面倒な処理をしているんだろうか?
というか、セキュリティタブのその部分をマジマジと初めて見た。

メニューにある「パスをコピー」してからダブルクォーテーション削除した方が早いのでは?

私の場合は、上に表示されるパスをコピーしてから\を入力してファイル名をくっつけるので他人のことを言えないが、よくこんな操作を見つけたと感心してしまった。

  • このエントリーをはてなブックマークに追加

コメントを残す


このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください