質問
Pythonでos.makedirsを実行すると表題にあるエラーである
[Error 5] Access is denied:
が発生します。
コードの内容は、
- カレントディレクトリにaaaフォルダがあれば、その中にあるテキストファイルをカレントディレクトリへ退避
- aaaフォルダを削除
- aaaフォルダを作成
- 退避したテキストファイルをaaaフォルダへ戻す
となります
サンプルコード
python
1import os 2import glob 3import shutil 4 5aaa_dir = os.path.join(os.getcwd(), "aaa") 6backup_dir = os.getcwd() 7 8if os.path.isdir(aaa_dir): 9 for item in glob.glob(os.path.join(aaa_dir, "*.txt")): 10 shutil.move(item, backup_dir) 11 shutil.rmtree(aaa_dir) 12 13os.makedirs(aaa_dir) 14 15for item in glob.glob(os.path.join(backup_dir, "*.txt")): 16 shutil.move(item, aaa_dir)
再現手順
- サンプルコードをコマンドラインから実行
- 実行後aaaフォルダが作成される
- Windowsのエクスプローラー上でaaaフォルダ内にaaa.txt(ファイルサイズは0 byte)を作成
- 再度サンプルコードをコマンドラインから実行
期待結果
エラーが発生せずに正常終了する
- (一瞬で終わるので目視はできないが)aaaフォルダにあるaaa.txtが退避され、
aaaフォルダが削除後に新規作成された後、aaaフォルダ内にaaa.txtが移動される
- つまり、見た目だけはサンプルコードの実行前後で何も変化はしないが、コードはエラーが発生することなく正常終了する
実際の結果
以下のようなエラーメッセージが出力され、カレントディレクトリにaaa.txtが退避されるが、aaaフォルダは消えた状態になる
Python 2.7.17
C:\python_temp>c:\Python27\python.exe a.py Traceback (most recent call last): File "a.py", line 13, in <module> os.makedirs(aaa_dir) File "c:\Python27\lib\os.py", line 157, in makedirs mkdir(name, mode) WindowsError: [Error 5] Access is denied: 'C:\python_temp\aaa'
Python 3.8.1
C:\python_temp>c:\Python38\python.exe a.py Traceback (most recent call last): File "a.py", line 13, in <module> os.makedirs(aaa_dir) File "c:\Python38\lib\os.py", line 221, in makedirs mkdir(name, mode) PermissionError: [WinError 5] Access is denied: 'C:\python_temp\aaa'
実行環境
Windows 10
Python 2.7.17および3.8.1
その他情報
- コマンドプロンプト上からtype nul > aaa\ccc.txtのようにテキストファイルを追加後にサンプルコードを実行してた場合は正常終了となる
何かわかりましたら、アドバイスをお願いします。
回答2件
あなたの回答
tips
プレビュー