У меня есть папка, содержащая много файлов. Есть группа, содержащая pc_0.txt,pc_1.txt,...,pc_699.txt. Я хочу выбрать все файлы между pc_200 -> и pc_699.txt
Как?
for filename in glob.glob("pc*.txt"):
global_list.append(filename)
У меня есть папка, содержащая много файлов. Есть группа, содержащая pc_0.txt,pc_1.txt,...,pc_699.txt. Я хочу выбрать все файлы между pc_200 -> и pc_699.txt
Как?
for filename in glob.glob("pc*.txt"):
global_list.append(filename)
Для этого конкретного случая glob
уже поддерживает то, что вам нужно (см. fnmatch
документы для групповые подстановочные знаки). Вы можете просто сделать:
for filename in glob.glob("pc[23456]??.txt"):
Если вам нужно уточнить, что два завершающих символа являются числами (в некоторых файлах могут быть нечисловые символы), вы можете заменить ?
на [0123456789]
, но в остальном я нахожу ?
немного менее отвлекающим.
В более сложном сценарии вам, возможно, придется прибегнуть к регулярным выражениям, и вы можете сделать это здесь с помощью:
import re
for filename in filter(re.compile(r'^pc_[2-6]\d\d\.txt$').match, os.listdir('.')):
но, учитывая, что подстановочные знаки в стиле глобуса работают достаточно хорошо, вам пока не нужно ломать большие пушки.
global_list.extend(glob.glob("pc*.txt"))
(или любой другой шаблон глобуса, на котором вы остановились); позволить Python выполнять работу сразу массово — это быстрее и чище, чем ненужный явный цикл. - person ShadowRanger   schedule 09.12.2016