teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

2021/04/03 08:43

投稿

退会済みユーザー
answer CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
  上記では、「プログラミング」というディレクトリしか存在しない(その下の「子供」というディレクトリが存在しない)にもかかわらず
6
6
  「子供/小・中学生のプログラミング教室|スタープログラミングスクール.jpg」というファイル名を指定した結果
7
- 「./プログラミング/子供/」というディレクトリ下に新規ファイルを作成しようとしのが原因です。
7
+ 「./プログラミング/子供/」というディレクトリ下に新規ファイルを作成しようとしのがFileNotFoundErrorの原因です。
8
8
 
9
9
  その他、区切り文字以外にも、ファイル名に使用できない文字列があると他のエラーが発生することがあります。
10
10
 

1

修正

2021/04/03 08:43

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,14 @@
1
+ open()でファイルを新規作成する場合、ディレクトリがあらかじめ作成されている必要がありますが、
1
- open()でファイルを新規作成する場合、ファイル名に「/」や「\」等のパス区切り文字列や、その他ファイル名に指定できない文字が含まれているとFileNotFoundError発生します。
2
+ ファイル名に「/」や「\」等のパス区切り文字列が含まれていると、その部分以下子ディレクトリと認識され、
3
+ そのディレクトリが存在しない場合にFileNotFoundErrorが発生します。
2
4
 
5
+ 上記では、「プログラミング」というディレクトリしか存在しない(その下の「子供」というディレクトリが存在しない)にもかかわらず
3
- 上記では、「子供/小・中学生のプログラミング教室|スタープログラミングスクール.jpg」という風に[/]を含むファイル名で書き込もうとしたことが原因です。
6
+ 「子供/小・中学生のプログラミング教室|スタープログラミングスクール.jpg」というファイル名を指定した結果
7
+ 「./プログラミング/子供/」というディレクトリ下に新規ファイルを作成しようとしのが原因です。
4
8
 
9
+ その他、区切り文字以外にも、ファイル名に使用できない文字列があると他のエラーが発生することがあります。
10
+
5
- 下記のように、 re.subを使って、ファイル名からエラーの原因となる文字を削除するようにます。
11
+ したがって、下記のように、 re.subを使って、ファイル名からエラーの原因となる文字を削除するようにするとうく行くと思います。
6
12
  ```
7
13
  import re
8
14