将列表对象作为命令行参数传递给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