2024-09-27 09:23:33 发布
网友
如何通过命令行将字典从另一个python脚本传递给python脚本?我使用子进程调用第二个脚本。
我的选择是: 一) 构建一个模块来从字符串解析字典(比我希望的更深入)。 二) 使用临时文件编写pickle,并将文件名作为参数传递 三) 不允许使用字典,但要处理键/值对(即“prog.py keya valuea keyb valueb”)
解决方案不一定要用户友好,但确实需要程序友好。出于安全和资源考虑,第二个程序必须作为单独的进程运行。
如果您不需要太复杂的数据结构,我可以推荐simplejson吗?在Python2.6及更高版本中,它作为内置模块(称为json)提供。
json
除了pickle,如果字典只包含Python原语,另一个选项是ast.literal_eval。
pickle
ast.literal_eval
>>> d = {3: 9, 'apple': 'orange'} >>> s = str(d) >>> s "{3: 9, 'apple': 'orange'}" >>> import ast >>> x = ast.literal_eval(s) >>> x {3: 9, 'apple': 'orange'}
您是否查看了pickle模块以通过stdout/stdin传递数据?
示例:
骑士.py:
import pickle import sys desires = {'say': 'ni', 'obtain': 'shrubbery'} pickle.dump(desires, sys.stdout)
圆桌会议.py:
import pickle import sys knightsRequest = pickle.load(sys.stdin) for req in knightsRequest: print "The knights %s %s." % (req, knightsRequest[req])
使用和输出:
$ python knights.py | python roundtable.py The knights say ni. The knights obtain shrubbery.
如果您不需要太复杂的数据结构,我可以推荐simplejson吗?在Python2.6及更高版本中,它作为内置模块(称为
json
)提供。除了
pickle
,如果字典只包含Python原语,另一个选项是ast.literal_eval
。您是否查看了pickle模块以通过stdout/stdin传递数据?
示例:
骑士.py:
圆桌会议.py:
使用和输出:
相关问题 更多 >
编程相关推荐