无法使用subprocess.call在我的python脚本中执行命令

时间:2016-03-22 17:03:28

标签: python linux

我试图制作一个脚本来运行youtube-dl包,以便直接从youtube视频中提取mp3。

我可以使用os.system()这样做:

#! /usr/bin/env python3
import os
#getting the youtube video link
vlink = input('Enter the youtube video link: ')
cmd = "youtube-dl --extract-audio --audio-format mp3 --audio-quality 0 " + vlink
os.system(cmd)

我想尝试使用subprocess.call() / subprocess.Popen()来完成此操作。 我尝试过在函数中输入参数的许多变体,但它们都返回错误,希望有人能指导我,谢谢!

1 个答案:

答案 0 :(得分:0)

通常,您可以使用shlex.split来分割参数:

import shlex
import subprocess
subprocess.call(shlex.split("youtube-dl --extract-audio --audio-format mp3 --audio-quality 0 " + vlink))

但是,您可能也不需要它:

import shlex
import subprocess
subprocess.call([
    "youtube-dl",
    "--extract-audio",
    "--audio-format",
    "mp3",
    "--audio-quality",
    "0",
    vlink])

请注意,默认情况下,subprocess会绕过您的shell,因此如果您在shell配置文件中对环境进行路径修改,则可能需要指定特定的env