如何在Python中将字符串列表传递给外部命令?
我正在编写一个Python程序,它将下载一个坏IP地址列表,并从OpenBSD pf中的表中添加/删除这些地址。程序下载列表,格式化它们(作为IP地址对象),并将它们传递给如何在Python中将字符串列表传递给外部命令?,python,openbsd,Python,Openbsd,我正在编写一个Python程序,它将下载一个坏IP地址列表,并从OpenBSD pf中的表中添加/删除这些地址。程序下载列表,格式化它们(作为IP地址对象),并将它们传递给pfctl命令。现在,我让它作为一个循环,为每个字符串调用一次pfctl,因此: for item in addedlist: subprocess.run(['pfctl', '-t', const.PF_LISTNAME, '-T', 'add',\ str(item)], check=True, stde
pfctl
命令。现在,我让它作为一个循环,为每个字符串调用一次pfctl
,因此:
for item in addedlist:
subprocess.run(['pfctl', '-t', const.PF_LISTNAME, '-T', 'add',\
str(item)], check=True, stderr=subprocess.DEVNULL)
for item in deletedlist:
subprocess.run(['pfctl', '-t', const.PF_LISTNAME, '-T', 'delete',\
str(item)], check=True, stderr=subprocess.DEVNULL)
其中:
addedlist
和deletedlist
分别是要添加和删除的IP地址对象的格式化列表
我只想为每个列表运行一次pfctl
命令,并一次性将addedlist
和deletedlist
传递给该命令,因为列表(cougipv6*cough*)可能相当长。但是,当我尝试这样做时,Python抱怨不希望有一个列表
任何帮助都将不胜感激。您必须将
项
连接到参数列表,而不是将项
列表嵌套在参数列表中
我们还将使用列表理解对项目调用str
subprocess.run(
["pfctl", "-t", const.PF_LISTNAME, "-T", "add"]
+ [str(item) for item in addedlist],
check=True,
stderr=subprocess.DEVNULL,
)
subprocess.run(
["pfctl", "-t", const.PF_LISTNAME, "-T", "delete"]
+ [str(item) for item in deletedlist],
check=True,
stderr=subprocess.DEVNULL,
)
你到底想在列表中通过什么?放弃标准错误似乎是一种可疑的做法。@tripleee,公平的问题。该命令为100000个左右的项中的每一项输出一行。当我让它工作时,我将把它取出并捕获输出。