繁体   English   中英

使用Python子流程模块时如何传递变量

[英]How do I pass variable when using Python subprocess module

我正在尝试使用python Subprocess模块​​从python代码启用/禁用以太网连接。 下面是我的代码,其中第一步正在寻找可用的“以太网连接”,而下一步则根据“%interfaces%”中传递的参数启用/禁用了以太网连接。

for /f "skip=2 tokens=3*" %%A in ('netsh interface show interface') do set interface=%%B

netsh interface set interface %interface%  ENABLED

现在,在python中使用时,我无法传递变量,但不确定是否可以传递。 仅传递以下命令可以按预期工作:

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)调用另一个命令。

如果仍然要使用字符串,则可以使用shlex.split

使用字符串格式,内插或串联:

x = 'Ethernet10'
subprocess.call('netsh interface set interface ' + x + ' ENABLED')

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM