#python
#python
Вопрос:
У меня есть папка с несколькими вложенными папками:
C:/Users/stacey/WorkDocs/port_aport_1m
C:/Users/stacey/WorkDocs/port_ajob_lists
C:/Users/stacey/WorkDocs/port_ajob_lists_bu
C:/Users/stacey/WorkDocs/port_ajob_lists_bu2
C:/Users/stacey/WorkDocs/port_aroll_185_oe_2018-09-07
C:/Users/stacey/WorkDocs/port_aroll_186_oe_2018-09-14
C:/Users/stacey/WorkDocs/port_aroll_187_oe_2018-09-21
C:/Users/stacey/WorkDocs/port_aroll_4_oe_2015-03-20
C:/Users/stacey/WorkDocs/port_aroll_5_oe_2015-03-27
C:/Users/stacey/WorkDocs/port_aroll_6_oe_2015-04-03
Если последняя папка в пути начинается с «roll», я хотел бы затем опросить эти папки. Я пытаюсь найти папки, используя следующее:
def main():
folder = 'C:/Users/stacey/WorkDocs/port_a'
for dirname, dirs, files in os.walk(folder):
if dirname == folder 'roll_*':
print('dirname')
Таким образом, текущий ожидаемый результат будет выглядеть следующим образом:
C:/Users/stacey/WorkDocs/port_aroll_185_oe_2018-09-07
C:/Users/stacey/WorkDocs/port_aroll_186_oe_2018-09-14
C:/Users/stacey/WorkDocs/port_aroll_187_oe_2018-09-21
C:/Users/stacey/WorkDocs/port_aroll_4_oe_2015-03-20
C:/Users/stacey/WorkDocs/port_aroll_5_oe_2015-03-27
C:/Users/stacey/WorkDocs/port_aroll_6_oe_2015-04-03
Однако я не получаю никаких выходных данных. Я думаю, возможно, я неправильно установил сравнение с подстановочными знаками, но не уверен. Как я могу вернуть желаемый результат?
Ответ №1:
Две проблемы. Во-первых, не забывайте использовать необработанную строку всякий раз, когда у вас есть косая черта, например:
folder = r'C:/Users/stacey/WorkDocs/port_a'
Во-вторых, вы не можете ожидать, что Python знает ваш синтаксис с ==
глобализацией при сравнении. Однако, поскольку вы выполняете сопоставление префиксов, просто проверьте префикс:
for dirname, dirs, files in os.walk(folder):
if dirname.startswith(folder r'roll_'):
print('dirname')
Но на самом деле, вы можете просто использовать модуль glob в Python для выполнения всего этого цикла:
import glob
for dirname in glob.glob(folder r'roll_*'):
print(dirname)