Python Subprocess.run стандартный выход - PullRequest
0 голосов
/ 15 апреля 2019

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

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

Ответы [ 2 ]

1 голос
/ 15 апреля 2019

Передайте дескриптор в каталог DEVNULL для стандартного вывода. (к которому можно обратиться, используя подпроцесс.DEVNULL)

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

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

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

0 голосов
/ 15 апреля 2019

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

process.stdout.close()

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...