Как найти размер папки в Python 2,7? - ошибка - PullRequest
0 голосов
/ 18 февраля 2020

Я использую этот код (в Python 2.7.8), чтобы найти размер подпапки в МБ \ ГБ в одной большой директории:

# -*- coding: cp1255 -*-
import os
def conv_MB_to_GB(input_megabyte):
        gigabyte = 1.0/1000/1000
        convert_gb = gigabyte * input_megabyte
        return convert_gb
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)
            total_size += os.path.getsize(fp)
    return  total_size/(1024*1024.0)
rootPath = r"G:\PROJECTS"
os.chdir(rootPath)
all_subdirs = [d for d in os.listdir('.') if os.path.isdir(d)]
for dirs in all_subdirs:
    dir = os.path.join(rootPath, dirs)
    os.chdir(dir)
    current = os.getcwd()
    print current
    if get_size(current) < 1000:
            print "%0.1fMB" % get_size(current)
    if get_size(current) > 1000:
            #print "%0.2fGB" % ((get_size(current))/1000) # this line do the same as the next line
            print "---%0.1fGB---" % (conv_MB_to_GB(get_size(current))*1000)
    print

этот код работает отлично, но если есть текстовый файл с именем на иврите которые могут быть сохранены как ANSI или Unicode в python?

1 Ответ

0 голосов
/ 18 февраля 2020

К сожалению, я не могу проверить это, так как я не на машине с Python, но следующее изменение должно работать:

for f in filenames:
    fp = os.path.join(dirpath, f.encode('utf-8'))
    total_size += os.path.getsize(fp)

Дополнение к закодируйте необработанное имя файла в узнаваемом формате - в данном случае, utf-8. Обратите внимание, что это параметр по умолчанию для encode, поэтому теоретически его можно опустить.

Дополнительные ссылки см .:

Python документы - кодировать

...