如何通过Python subprocess.run向子进程传递整数输入?
解决Python脚本通过subprocess传递参数的问题
你的需求完全可以实现,但得调整两个脚本的写法,具体如下:
1. 修改被调用的脚本(random.py)
原来用input()获取输入的方式不适合脚本间传参,改成通过命令行参数接收值,用sys.argv来读取:
import sys l1 = ['Bob', 'Eric', 'Dimitar', 'Kyle'] # sys.argv[0]是脚本本身的名字,sys.argv[1]是第一个传入的参数 n = int(sys.argv[1]) print(l1[n])
2. 修改调用脚本的代码
有两种写法可选:
- 更安全的写法(不使用shell=True)
把命令和参数拆成列表传递,避免shell注入风险:
import subprocess subprocess.run(["python", "random.py", "2"])
- 使用shell=True的写法
直接把参数拼到命令字符串里:
import subprocess subprocess.run("python random.py 2", shell=True)
另外补充下:你之前看不到输入提示,是因为subprocess默认会把子进程的输入输出和父进程的终端断开,所以没法交互输入。用命令行参数的方式既解决了传参问题,也避开了这个交互障碍。
内容的提问来源于stack exchange,提问作者mansu kim
相关产品推荐
相关产品推荐

