Почему в выводе этой команды wget нет совпадений с регулярным выражением? - PullRequest
0 голосов
/ 05 мая 2018

Я загружаю файл из Интернета с помощью wget и хочу записать имя фактического загруженного файла (оно изменяется в случае, если файл уже существует). Я знаю, что wget выводится в stderr, поэтому я пытаюсь найти в нем совпадение с регулярным выражением. Должен быть один, но мой "матч" - None (потому что я получаю ошибку, 'NoneType' object has no attribute 'group'.

cmd = "wget " + url + " -P " + directory
args = shlex.split(cmd)
res = subprocess.run(args, check=True, stderr=subprocess.PIPE)
pattern = re.compile("\'(.+)\'", re.MULTILINE)
match = re.search(pattern, res.stderr.decode("utf-8"))
filename = match.group(1) # filename is None

Но когда я проверяю значение stderr, это выглядит так:

... connected.HTTP request sent, awaiting response... 200 OKLength: 
46Saving to: '/home/student/Downloads/helloworld'     0K

Я пытался передать команду в виде строки в subprocess.run с shell=True, с регулярным выражением re.MULTILINE и без, и другие вещи безрезультатно.

...