Форум сайта python.su
857
ShamanРасширения надо подавать в функцию, иначе при поиске других файлов нельзя будет её использовать.
У меня такое крутится:
ShamanА генератор-то там зачем?for f in (_f for _f in fnames if _f.lower().endswith(('.doc', '.docx'))):
Отредактировано py.user.next (Авг. 20, 2015 14:25:41)
Офлайн
88
py.user.nextЭто подправленная копипаста - мне передавать ничего не нужно.
Расширения надо подавать в функцию, иначе при поиске других файлов нельзя будет её использовать.
py.user.nextЭкономия места на экране.
А генератор-то там зачем?
Отредактировано Shaman (Авг. 20, 2015 14:16:40)
Офлайн
857
ShamanНу, а путь зачем передаётся тогда? ;) По такой логике надо и его зашить в функцию. (Чтобы потом её выкинуть при первом изменении условий.)
Это подправленная копипаста - мне передавать ничего не нужно.
ShamanЭто шутка такая? :)) А то, что он память жрёт, ничего?
Экономия места на экране.
Офлайн
88
py.user.nextЧтоб было
Ну, а путь зачем передаётся тогда?
Я не собираюсь яростно защищать сто строк кода.py.user.nextЭто тоже шутка? Генераторов бояться - в питоны не ходить. Не много они жрут.
Это шутка такая?) А то, что он память жрёт, ничего?
Офлайн
0
py.user.next, я малость слукавил на счет маски - она должна выглядеть вот так:
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()
Офлайн
0
Если мне нужен
doza_andдля версии 3.5 мне pywin скачивать надо?
win32com
ImportError: No module named 'win32com'
Отредактировано Kir@ (Авг. 20, 2015 14:48:27)
Офлайн
857
ShamanГенератор - это объект, там у него есть методы, переменные всякие.
Не много они жрут.
Kir@Не, всё оставляешь, а снаружи из files выбираешь только “тата” перед передачей в copy_to_dir().
, я малость слукавил на счет маски - она должна выглядеть вот так:
'Проект*тата*.doc*'
Я так понимаю, теперь что-то можно удалить из этого кода?
Отредактировано py.user.next (Авг. 20, 2015 15:00:43)
Офлайн
88
py.user.nextИ что? Каждый if тоже память использует.
Генератор - это объект, там у него есть методы, переменные всякие.
Офлайн
857
ShamanДа, вообще-то, внутри генератора этих if'ов дофига и больше. К тому же у тебя в генераторе тоже if стоит, чтобы выбирать имена.
И что? Каждый if тоже память использует.
Офлайн
88
py.user.nextСпасибо за информацию, Кэп! ) Для memory bounded и speed bounded задач лучше подобрать другой инструмент, а так на моём небольшом дисплее экономится одна сточка и четыре столбца. Почти везде вместо конструкции вида
Да, вообще-то, внутри генератора этих if'ов дофига и больше. К тому же у тебя в генераторе тоже if стоит, чтобы выбирать имена.
for a in ... :
if a ... :
Отредактировано Shaman (Авг. 20, 2015 15:44:35)
Офлайн