У меня есть следующая функция, которая выполняется как ожидалось.

def get_files(paths):
    for path in paths:
        file_name = parse_path(path)
        csv_command = "curl -b ./cookie {} > ./tmp/{}".format(path, file_name)
        subprocess.run([csv_command], shell=True)
    print("success")

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

0
user8128927 15 Апр 2019 в 21:37

2 ответа

Лучший ответ

Передайте дескриптор в каталог DEVNULL для стандартного вывода. (доступ к которому можно получить с помощью subprocess.DEVNULL)

Это должно подавить вывод из вашей функции

subprocess.run([csv_command], shell=True, stdout=subprocess.DEVNULL)

Вы можете увидеть еще несколько вариантов, прочитав эту страницу: https: // docs .python.org / 3 / library / subprocess.html # subprocess.DEVNULL.

0
SyntaxVoid supports Monica 15 Апр 2019 в 18:49

Просто закройте файл-дескриптор:

process.stdout.close()

Где process - это процесс, который вы не хотите читать.

0
Agapito Gallart i Bernat 15 Апр 2019 в 18:49