WinError3 Python для существующего каталога - PullRequest
0 голосов
/ 28 июня 2018

Я получаю эту ошибку для существующего каталога, когда пытаюсь использовать

os.scandir()

Каталог существует, так как я могу скопировать и вставить его в приглашение Windows, и каталог откроется.

F:\Storage$\backups\[SCRUBBED DATA]\archive\Google Chrome\Default\Extensions\nenlahapcbofgnanklpelkaejcehkggg\0.1.248.317_0\notifications\pages\Cashback\components\CashBackResolve\components\shared\RewardsActivation\components\CashbackSectionSimple

Попытка запустить ту же функцию из CLI дает тот же результат.

F:\automation>python
Python 3.6.5 (v3.6.5:f59c0932b4, Mar 28 2018, 17:00:18) [MSC v.1900 64 bit (AMD64)] on win32
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.scandir(r'F:\Storage$\backups\[SCRUBBED DATA]\archive\Google Chrome\Default\Extensions\nenlahapcbofgnanklpelkaejcehkggg\0.1.248.317_0\notifications\pages\Cashback\components\CashBackResolve\components\shared\RewardsActivation\components\CashbackSectionSimple')
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
FileNotFoundError: [WinError 3] The system cannot find the path specified: 'F:\\Storage$\\backups\\[SCRUBBED DATA]\\archive\\Google Chrome\\Default\\Extensions\\nenlahapcbofgnanklpelkaejcehkggg\\0.1.248.317_0\\notifications\\pages\\Cashback\\components\\CashBackResolve\\components\\shared\\RewardsActivation\\components\\CashbackSectionSimple'
>>>

Запуск его в командной строке с повышенными правами не решил эту проблему. Что может быть причиной этого?

Директор не является жестко закодированным, а скорее генерируется в методе:

def getFolderSize(path='.'):
    total = 0
    for entry in os.scandir(path):
        if entry.is_file():
            total += entry.stat().st_size
        elif entry.is_dir():
            total += getFolderSize(entry.path)
        return total   

1 Ответ

0 голосов
/ 28 июня 2018

Когда я вижу ваше сообщение об ошибке, я не могу пропустить двойную обратную косую черту "\" в пути. Я бы порекомендовал вам использовать os.path.join () при работе с каталогами, так как это сделает ваш скрипт кроссплатформенным и позаботится о правильном построении пути.

Здесь вы можете узнать больше об этом: Ссылка здесь

Попробуйте изменить эту строку os.scandir(r'F:\Storage$\backups\[SCRUBBED DATA]\archive\Google Chrome\Default\Extensions\nenlahapcbofgnanklpelkaejcehkggg\0.1.248.317_0\notifications\pages\Cashback\components\CashBackResolve\components\shared\RewardsActivation\components\CashbackSectionSimple')

до

os.scandir(os.path.join('F:\', 'Storage', 'backups', '[SCRUBBED DATA]', 'archive', 'Google Chrome', 'Default', 'Extensions', 'nenlahapcbofgnanklpelkaejcehkggg', '0.1.248.317_0', 'notifications', 'pages', 'Cashback', 'components', 'CashBackResolve', 'components', 'shared', 'RewardsActivation', 'components', 'CashbackSectionSimple'))
...