質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.30%
Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

1回答

3012閲覧

PermissionError: [WinError 5]の解決方法

fujigawa

総合スコア0

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

0クリップ

投稿2023/02/18 17:04

実現したいこと

指定ディレクトリ内の各ファイル・フォルダのサイズを表示したい

前提

PC(windows10)のSSDの空き容量が少なくなってきて容量を確保したいもののディレクトリ構成を整理できていないのでループでサイズを表示して何が容量を食ってるのか知りたかったです.

発生している問題・エラーメッセージ

PermissionError: [WinError 5] アクセスが拒否されました。

該当のソースコード

Python

1# %% 2import os 3import glob 4# %% 5def get_dir_size(path='.'): 6 total = 0 7 with os.scandir(path) as it: 8 for entry in it: 9 if entry.is_file(): 10 total += entry.stat().st_size 11 elif entry.is_dir(): 12 total += get_dir_size(entry.path) 13 return total 14# %% 15dir = glob.glob(rf'C:\Users\hoge\*') 16# %% 17for i in range(len(dir)): 18 print(rf'{i}:{dir[i]}') 19 print(get_dir_size(dir[i]))

試したこと

  1. anaconda command promptを管理者として開いて実行した
  2. 指定ディレクトリを読み取り専用の設定を解除した

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

otn

2023/02/18 17:16

エラーメッセージ全文を載せましょう。
fujigawa

2023/02/18 17:19

ですね.投稿した瞬間に気づきました. 以下全文です. PermissionError Traceback (most recent call last) Cell In[9], line 3 1 for i in range(len(dir)): 2 print(rf'{i}:{dir[i]}') ----> 3 print(get_dir_size(dir[i])) d:\pythonsourcefolder\get_dir_size.py in line 9, in get_dir_size(path) 10 total += entry.stat().st_size 11 elif entry.is_dir(): ----> 12 total += get_dir_size(entry.path) 13 return total d:\pythonsourcefolder\get_dir_size.py in line 9, in get_dir_size(path) 10 total += entry.stat().st_size 11 elif entry.is_dir(): ----> 12 total += get_dir_size(entry.path) 13 return total d:\pythonsourcefolder\get_dir_size.py in line 4, in get_dir_size(path) 5 def get_dir_size(path='.'): 6 total = 0 ----> 7 with os.scandir(path) as it: 8 for entry in it: 9 if entry.is_file(): PermissionError: [WinError 5] アクセスが拒否されました。: 'C:\\Users\\hoger\\AppData\\Local\\Application Data'
guest

回答1

0

エラーメッセージが不明ですが、おそらくジャンクションのところでエラーになっているのではと思うので、
ジャンクションをスキップする必要があるでしょう。

dir

1C:\Users\XXXXXX> dir /a | findstr JUNCTION 22021/01/09 23:38 <JUNCTION> Application Data [C:\Users\XXXXXX\AppData\Roaming] 32021/01/09 23:38 <JUNCTION> Cookies [C:\Users\XXXXXX\AppData\Local\Microsoft\Windows\INetCookies] 42021/01/09 23:38 <JUNCTION> Local Settings [C:\Users\XXXXXX\AppData\Local] 52021/01/09 23:38 <JUNCTION> My Documents [C:\Users\XXXXXX\Documents] 62021/01/09 23:38 <JUNCTION> NetHood [C:\Users\XXXXXX\AppData\Roaming\Microsoft\Windows\Network Shortcuts] 72021/01/09 23:38 <JUNCTION> PrintHood [C:\Users\XXXXXX\AppData\Roaming\Microsoft\Windows\Printer Shortcuts] 82021/01/09 23:38 <JUNCTION> Recent [C:\Users\XXXXXX\AppData\Roaming\Microsoft\Windows\Recent] 92021/01/09 23:38 <JUNCTION> SendTo [C:\Users\XXXXXX\AppData\Roaming\Microsoft\Windows\SendTo] 102021/01/09 23:38 <JUNCTION> Templates [C:\Users\XXXXXX\AppData\Roaming\Microsoft\Windows\Templates] 112021/01/09 23:38 <JUNCTION> スタート メニュー [C:\Users\XXXXXX\AppData\Roaming\Microsoft\Windows\Start Menu]

投稿2023/02/18 17:34

編集2023/02/18 17:40
otn

総合スコア86324

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.30%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問