How do I pass variable when using Python subprocess module(使用 Python 子进程模块时如何传递变量)
问题描述
我正在尝试使用 python Subprocess 模块从 python 代码启用/禁用以太网连接.下面是我的代码,其中第一步是寻找可用的以太网连接",下一步根据%interfaces%"中传递的参数启用/禁用以太网连接.
I'm trying to use python Subprocess module to enable/disable Ethernet connection from python code. Below is my code in which the first step is looking for the available "Ethernet Connections" and the next step enables/disables the ethernet connection according to the parameter passed in "%interfaces%".
for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do set interface=%%B
netsh interface set interface %interface% ENABLED
现在在 python 中使用时,我无法传递变量,但不确定它是否可能.仅传递如下命令按预期工作:
Now when using in python I couldn't pass the variable, not sure if it's even possible though. Passing only command as below works as expected:
import subprocess
subprocess.call('netsh interface set interface Ethernet10 ENABLED')
我想做这样的事情:
import subprocess
subprocess.call (set x = 'Ethernet0')
subprocess.call('netsh interface set interface x ENABLED')
推荐答案
subprocess.call 将列表作为参数:
subprocess.call(['netsh', 'interface', 'set', 'interface', x, 'ENABLED'])
您可以改为传递 shell=True
并且您的字符串会起作用,但这是一个安全风险,因为例如用户可以通过使用 $(command_here)代码>
You could instead pass shell=True
and your string would work, but it is a security risk, since an user could for example call another command by using $(command_here)
如果你仍然想使用字符串,你可以使用 shlex.split
.
If you still want to use a string, you could use shlex.split
.
这篇关于使用 Python 子进程模块时如何传递变量的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!
本文标题为:使用 Python 子进程模块时如何传递变量


基础教程推荐
- Python kivy 入口点 inflateRest2 无法定位 libpng16-16.dll 2022-01-01
- 何时使用 os.name、sys.platform 或 platform.system? 2022-01-01
- 使用PyInstaller后在Windows中打开可执行文件时出错 2022-01-01
- 线程时出现 msgbox 错误,GUI 块 2022-01-01
- 如何在海运重新绘制中自定义标题和y标签 2022-01-01
- 如何让 python 脚本监听来自另一个脚本的输入 2022-01-01
- 在 Python 中,如果我在一个“with"中返回.块,文件还会关闭吗? 2022-01-01
- 用于分类数据的跳跃记号标签 2022-01-01
- 筛选NumPy数组 2022-01-01
- Dask.array.套用_沿_轴:由于额外的元素([1]),使用dask.array的每一行作为另一个函数的输入失败 2022-01-01