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)
我正在尝试 运行 一个 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)