Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/json/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将列表对象作为命令行参数传递给python脚本_Python_Json_List - Fatal编程技术网

将列表对象作为命令行参数传递给python脚本

将列表对象作为命令行参数传递给python脚本,python,json,list,Python,Json,List,我有一个脚本-script.py,我正在解析一个json文件(json文件有一个要复制到远程主机的目录列表),json解析会返回两个列表-列表1和列表2。然后我将这个列表1和列表2传递给另一个脚本script2,该脚本在script.py 差不多 #!/usr/bin/python json = 'jsonfile.json' input_dir='some path1' output_dir='some path2' # function to parse json file and get

我有一个脚本-
script.py
,我正在解析一个json文件(json文件有一个要复制到远程主机的目录列表),json解析会返回两个列表-列表1和列表2。然后我将这个列表1和列表2传递给另一个脚本
script2
,该脚本在
script.py

差不多

#!/usr/bin/python
json = 'jsonfile.json'
input_dir='some path1'
output_dir='some path2'
# function to parse json file and get the lists
# call script2.py
path_to_script2/script2.py list1 list2 input_dir output_dir 
我试过了

e、 例如,
script2.py列表1列表2输入路径输出路径
这表示我无法将列表类型传递给脚本

script2.py具有

import os
import sys
import ast

a = ast.literal_eval(sys.argv[1])
b = ast.literal_eval(sys.argv[2])
c = sys.argv[3]
d = sys.argv[4]

print(a)
print(b)
当我尝试这个的时候

script2.py "list1" "list2" input_path output_path - 
我得到了这个错误-

Traceback (most recent call last):
  File "path/2/script/bexec.p", line 7, in <module>
    a = ast.literal_eval(sys.argv[1])
  File "/usr/lib64/python2.7/ast.py", line 80, in literal_eval
    return _convert(node_or_string)
  File "/usr/lib64/python2.7/ast.py", line 79, in _convert
    raise ValueError('malformed string')
ValueError: malformed string
这只是json文件的一个片段-它在
list2
字段中有更多的值

或者我可以将json.loads(file.json)输出传递给python脚本。
我希望这能提供清晰的信息,或者我可以解释更多,以防需要任何其他细节。

您不能将列表作为命令行参数传递。相反,您可以从另一个脚本导入该方法,并使用参数调用该方法

脚本1.py

#!/usr/bin/python
from script2 import script2_main
json = 'jsonfile.json'
input_dir='some path1'
output_dir='some path2'
# function to parse json file and get the lists
# call script2.py
script2_main(list1, list2, input_dir, output_dir)

脚本2.py

def script2_main(list1, list2, input_dir, output_dir):
    # Do something with the data
    pass


如果shebang不打算作为可执行文件运行,请不要将其放在script2.py的顶部。已从script2.py中删除
def script2_main(list1, list2, input_dir, output_dir):
    # Do something with the data
    pass