os.system 在 python 中输入之前不起作用

os.system doesn't work until getting input in python

我正在尝试 运行 一个 youtube-dl 命令,但是当 os.system(命令)运行 时,它正在等待终端上的输入(不需要输入)。我按回车2-3次开始下载。

url = sys.argv[1]
command = "youtube-dl " + url
print("downloading...")
os.system(command)
print("test")

我看不到“测试”输出。命令在 cmd 上正常工作。等待或子进程命令不工作。

使用 subprocess 而不是 os.system 将允许您设置 stdin=subprocess.DEVNULL 所以它 不能 从 stdin 读取(不去TTY,大多数程序都没有)。此外,传递列表并保留默认值 shell=False 可避免 URL 中的内容可能被 shell 视为 运行.

的命令的安全问题。
subprocess.run(["youtube-dl", url], stdin=subprocess.DEVNULL)