【发布时间】:2016-12-08 10:45:30
【问题描述】:
我刚刚在 python 中创建了一个脚本。它在本地 Windows 操作系统上运行良好。但是,当我将脚本部署到 Linux 服务器时。它给出了以下错误;有什么想法可以在linux上解决这个问题吗?
Typerror: execv arg 2 must contain only strings
def export(ip, channel_search_list):
if len(ip) > 0:
filename = "files//"+"output"+str(ip)+".txt"
action = 'FullExport'
menu_action = 'all'
arg_list = [('upnp//Client//UPNP_Client_Cmd_Line.py')]
arg_list.append(' --action=')
arg_list.append(action)
arg_list.append(' --ip=')
arg_list.append(ip)
arg_list.append(' --menu=')
arg_list.append(menu_action)
x = subprocess.Popen(arg_list, shell=True)
print arg_list
with open(filename, "w+") as output:
subprocess.call(["python", arg_list], stdout=output)
get_book_ids_func(filename, channel_search_list, ip)
File "/usr/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
self.run()
File "/usr/lib/python2.7/multiprocessing/process.py", line 114, in run
self._target(*self._args, **self._kwargs)
File "index.py", line 202, in export
subprocess.call(['python', arg_list], stdout=output)
File "/usr/lib/python2.7/subprocess.py", line 522, in call
return Popen(*popenargs, **kwargs).wait()
File "/usr/lib/python2.7/subprocess.py", line 710, in __init__
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1327, in _execute_child
raise child_exception
TypeError: execv() arg 2 must contain only strings
PID is:4439
【问题讨论】:
-
arg_list.append(str(ip)) ?
-
嗨@MauriceMeyer 感谢您的回答。我之前尝试过,不幸的是这并没有解决问题。
-
arg_list = [('upnp//Client//UPNP_Client_Cmd_Line.py')] 包含一个元组而不是一个字符串
标签: python linux subprocess