Как напечатать путь к файлу в Python с помощью glob

Я хочу найти имя файла, а затем распечатать путь к нему с помощью python. Моя программа успешно работает следующим образом.

from pathlib import Path
import glob
import os


for file in Path('<dir_address>').glob('**/*some_string*.*fastq.gz'):
    print(file)

Он печатает пути ко всем файлам, имеющим совпадение some_string в своем имени в.

Теперь я хочу определить аргумент вместо some_string следующим образом.

file_name="abc"   

from pathlib import Path
import glob
import os


for file in Path('<dir_address>').glob('**/*file_name*.*fastq.gz'):
    print(file)

Это не дает никаких результатов. Мои вопросы заключаются в том, как передать эту sub_string в качестве переменной в программе, которая будет отображать путь к файлам для всех файлов, имеющих эту конкретную sub_string в своем имени.


person Abdul Karim Khan    schedule 20.09.2019    source источник
comment
Рассматривали ли вы использование регулярного выражения вместо glob - как упоминалось в этом сообщении? Затем вы можете использовать функцию re.compile() для сохранения скомпилированного регулярного выражения в переменной, как вы просили.   -  person S3DEV    schedule 20.09.2019
comment
Мне нужно подтверждение, что вам нужно, это путь к файлу со всеми именами файлов с подстрокой abc? Я прав?   -  person CodeRed    schedule 20.09.2019
comment
да. Путь ко всем файлам с подстрокой abc   -  person Abdul Karim Khan    schedule 20.09.2019
comment
у вас есть строка, поэтому используйте строковую функцию, такую ​​как форматирование строки f'**/*{argument}*.*fastq.gz' или для более старого Python '**/*{}*.*fastq.gz'.format(argument)   -  person furas    schedule 20.09.2019


Ответы (1)


Думаю, это то, что вам нужно:

from pathlib import Path
import glob
import os

file_name="abc"   
for file in Path('<dir_address>').glob(f'**/*{file_name}*.*fastq.gz'):
    print(file)

В f-строке {filename} заменяется строкой переменной filename.

person AnsFourtyTwo    schedule 20.09.2019