Я пытаюсь запустить функцию, которая возвращает общий размер папки и всего ее содержимого. это функция:
#!/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». Я попытался использовать декодирование, как показано здесь . но это не сработало.