os.walk () генерирует неверные пути для файлов с акцентированными буквами на Windows 10 - PullRequest
2 голосов
/ 23 января 2020

Я пытаюсь запустить функцию, которая возвращает общий размер папки и всего ее содержимого. это функция:

#!/usr/local/bin/python
# -*- coding: utf-8-*-

import os


def get_size(start_path = '.'):
    total_size = 0
    for dirpath, dirnames, filenames in os.walk(start_path):
        for f in filenames:
            fp = os.path.join(dirpath, f)
            # skip if it is symbolic link
            if not os.path.islink(fp):
                total_size += os.path.getsize(fp)

    return total_size

Функция отлично работает с любым путем в качестве входа, за исключением случаев, когда я даю ему путь к папке, в которой есть файл с акцентированными буквами на его имени.

Я получаю эту ошибку:

Traceback (most recent call last):
  File "C:/Users/Owner/PycharmProjects/test/tester.py", line 18, in <module>
    print get_size("c:\\nizan\\kal")
  File "C:/Users/Owner/PycharmProjects/test/tester.py", line 13, in get_size
    total_size += os.path.getsize(fp)
  File "C:\Python27\lib\genericpath.py", line 49, in getsize
    return os.stat(filename).st_size
WindowsError: [Error 123] The filename, directory name, or volume label  
syntax is incorrect: 'c:\\nizan\\kal\\?xample.txt'

Process finished with exit code 1

Настоящее имя файла, вызывающего проблему, - «éxample.txt». Я попытался использовать декодирование, как показано здесь . но это не сработало.

...