Обнаружение некоторых проблем с обходом папки в Python. - PullRequest
0 голосов
/ 06 ноября 2019

Я столкнулся с небольшой проблемой при попытке вычислить объем памяти, который у меня был, проходя по определенной папке с помощью os.walk (). Кажется, что он будет работать, обходя указанную папку (в основном первый раунд) и определяя, является ли объект файлом или папкой.

Проблема возникает, когда он проходит второй раунд (первая подпапка первогокруглый). Он не будет захватывать некоторые файлы и вернет ошибку.

    for folderName, subfolders, filenames in os.walk(original_root_folder):
        space()
        print('The current folder is ' + folderName)

        for subfolder in subfolders:
            print('SUBFOLDER OF ' + folderName + ': ' + subfolder + ', Size is ', (os.path.getsize(subfolder) / 1000), " KB")
            total_size_of_folder = total_size_of_folder + os.path.getsize(subfolder)

        for filename in filenames:
            print('FILE INSIDE ' + folderName + ': '+ filename + ', Size is ', (os.path.getsize(filename) / 1000), " KB")
            total_size_of_folder = total_size_of_folder + os.path.getsize(filename)

    print("Total of folder",(total_size_of_folder/1000)," KB")

Это результат первого раунда, который является желаемым результатом

    The current folder is C:\Users\Someone\Desktop
    SUBFOLDER OF C:\Users\Someone\Desktop: COMP, Size is  4.096  KB
    SUBFOLDER OF C:\Users\Someone\Desktop: compa, Size is  0.0  KB
    SUBFOLDER OF C:\Users\Someone\Desktop: compa2, Size is  4.096  KB
    SUBFOLDER OF C:\Users\Someone\Desktop: HitFilm Express 2017 Exports, Size is  0.0  KB

Это второй раунд

    The current folder is C:\Users\Someone\Desktop\COMP
    SUBFOLDER OF C:\Users\Someone\Desktop\COMP: comp2402a1, Size is  0.0  KB
    FILE INSIDE C:\Users\Someone\Desktop\COMP: comp2402a1.zip, Size is  5.786  KB

Это ошибка

    Traceback (most recent call last):
      File "C:/Users/Someone/Desktop/Python testing/reg.py", line 129, in <module>
        print('FILE INSIDE ' + folderName + ': '+ filename + ', Size is ', (os.path.getsize(filename) / 1000), " KB")
      File "C:\Users\Someone\AppData\Local\Programs\Python\Python37-32\lib\genericpath.py", line 50, in getsize
        return os.stat(filename).st_size
    FileNotFoundError: [WinError 2] The system cannot find the file specified: 'input.txt'

Я ожидал включения файла "input.txtmsgstr "однако он, очевидно, не может найти файл.

1 Ответ

0 голосов
/ 06 ноября 2019

os.path.getsize () работает в текущем рабочем каталоге.

Заменить os.path.getsize(filename)

на os.path.getsize(os.path.join(folderName, filename))

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...