Форум программистов
 
О проблемах, например, с регистрацией пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail, а тут можно восстановить пароль.

Вернуться   Форум программистов > Скриптовые языки программирования > Python
Регистрация

Восстановить пароль
Повторная активизация e-mail

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Ответ
 
Опции темы
Старый 25.07.2017, 09:24   #1
tonchikp
Пользователь
 
Аватар для tonchikp
 
Регистрация: 16.07.2016
Сообщений: 15
Вопрос Борьба с нехорошими символами в именах файлов

Уважаемые форумчане! Требуется ваша помощь!

Хочу разобраться с файловым хранилищем, удалить дубликаты файлов. Написал программу обходящую дерево директорий. Застрял на этапе вычисления хэшей, дело в том, что имена файлов содержат не только алфавитные символы и цифры, а также пробелы и спецсимволы. Сначала Python останавливался на первом же проблемном файле, позже я дописал try / except, и теперь он доходит до конца, пропуская проблемные файлы, но меня это не устраивает!

Язык: Python 3

Код:
#! /usr/bin/env python3

import subprocess

try:
    hash = subprocess.check_output('md5sum -- "{}"'.format(file), universal_newlines=True, shell=True)[:32]

except Exception:
    print('Проблемный файл {}'.format(file))
С hashlib пока не получается, проблем много создаёт, поэтому пока пришлось воспользоваться стандартной утилитой md5sum. Может подскажете заодно как решить проблему с применением hashlib.
Изучаю Python3. Добавляйтесь в друзья: tonchikp@jabberon.net
tonchikp вне форума Ответить с цитированием
Старый 26.07.2017, 03:37   #2
pyuser
Новичок
Джуниор
 
Регистрация: 26.06.2017
Сообщений: 2
По умолчанию

Код:
import hashlib

def md5(fname):
    """ Возвращает контрольную сумму файла """

    result = hashlib.md5()
    with open(fname, "rb") as f:
        while True:
            d = f.read(8192)
            if not d:
                break
            result.update(d)
    return result.hexdigest()
pyuser вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Подсчет количества phone в уникальных именах Parallelogram SQL, базы данных 13 18.04.2016 15:02
Как выбрать файлы по дате в именах и заархивировать их? GorSHOK1 Linux (Ubuntu, Debian, Red Hat, CentOS, Mint) 4 21.10.2015 23:04
Apache и кодировка в именах файлов Serge_Bliznykov HTML и CSS 8 17.03.2015 17:56
сбой в именах файлов Tadjik Операционные системы общие вопросы 1 27.09.2010 11:13
Что означает буква A в именах параметров? mutabor Общие вопросы Delphi 12 28.03.2010 11:12


Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru
Пеллетный котёл Emtas
котлы EMTAS