Найти - Пользователи
Полная версия: Подсчет словосочетаний в файлах
Начало » Python для новичков » Подсчет словосочетаний в файлах
1 2 3 4 5 6 7
py.user.next
Shaman
У меня такое крутится:
Расширения надо подавать в функцию, иначе при поиске других файлов нельзя будет её использовать.

Shaman
for f in (_f for _f in fnames if _f.lower().endswith(('.doc', '.docx'))):
А генератор-то там зачем?
Shaman
py.user.next
Расширения надо подавать в функцию, иначе при поиске других файлов нельзя будет её использовать.
Это подправленная копипаста - мне передавать ничего не нужно.
py.user.next
А генератор-то там зачем?
Экономия места на экране.
py.user.next
Shaman
Это подправленная копипаста - мне передавать ничего не нужно.
Ну, а путь зачем передаётся тогда? ;) По такой логике надо и его зашить в функцию. (Чтобы потом её выкинуть при первом изменении условий.)

Shaman
Экономия места на экране.
Это шутка такая? :)) А то, что он память жрёт, ничего?
Shaman
py.user.next
Ну, а путь зачем передаётся тогда?
Чтоб было Я не собираюсь яростно защищать сто строк кода.
py.user.next
Это шутка такая? ) А то, что он память жрёт, ничего?
Это тоже шутка? Генераторов бояться - в питоны не ходить. Не много они жрут.
Kir@
py.user.next
, я малость слукавил на счет маски - она должна выглядеть вот так:
'Проект*тата*.doc*'
Переписал под себя и добавил fnmatch.
Я так понимаю, теперь что-то можно удалить из этого кода?

def get_files_ext(source, exts):
    exts = tuple(exts)
    #print(exts)
    for root, dirs, files in os.walk(source):
        for name in files:
            #if name.endswith(exts):
            if fnmatch.fnmatch(name, 'Проект*тата*.doc*'):
                yield os.path.join(root, name)
                 
def copy_to_dir(seq, dest):
    for i in seq:
        shutil.copy(i, dest)
        
def main():
    source=czk
    input_dir = czk
    output_dir = 'ЦЗК'
    extensions = ('Проект*тата*.doc*')
    files = get_files_ext(input_dir, extensions)
    copy_to_dir(files, output_dir)
 
if __name__ == '__main__':
    main()
Kir@
Если мне нужен
doza_and
win32com
для версии 3.5 мне pywin скачивать надо?

Походу, надо…
ImportError: No module named 'win32com'
py.user.next
Shaman
Не много они жрут.
Генератор - это объект, там у него есть методы, переменные всякие.

Kir@
, я малость слукавил на счет маски - она должна выглядеть вот так:
'Проект*тата*.doc*'
Я так понимаю, теперь что-то можно удалить из этого кода?
Не, всё оставляешь, а снаружи из files выбираешь только “тата” перед передачей в copy_to_dir().
Если нужно что-то забубённое, то надо сделать другую функцию вместо get_files_ext(). Например, get_files_regex(), которая бы по регулярке выбирала имена.
Shaman
py.user.next
Генератор - это объект, там у него есть методы, переменные всякие.
И что? Каждый if тоже память использует.
py.user.next
Shaman
И что? Каждый if тоже память использует.
Да, вообще-то, внутри генератора этих if'ов дофига и больше. К тому же у тебя в генераторе тоже if стоит, чтобы выбирать имена.
Shaman
py.user.next
Да, вообще-то, внутри генератора этих if'ов дофига и больше. К тому же у тебя в генераторе тоже if стоит, чтобы выбирать имена.
Спасибо за информацию, Кэп! ) Для memory bounded и speed bounded задач лучше подобрать другой инструмент, а так на моём небольшом дисплее экономится одна сточка и четыре столбца. Почти везде вместо конструкции вида
for a in ... :
if a ... :
я пишу код с генератором и проблем не имею, а если начать экономить на генераторах, тогда придётся отказаться от большей части питоньей стандартной библиотеки.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB