通过命令lin将字典传递给Python脚本

2024-09-27 09:23:33 发布

您现在位置:Python中文网/ 问答频道 /正文

如何通过命令行将字典从另一个python脚本传递给python脚本?我使用子进程调用第二个脚本。

我的选择是:
一) 构建一个模块来从字符串解析字典(比我希望的更深入)。
二) 使用临时文件编写pickle,并将文件名作为参数传递
三) 不允许使用字典,但要处理键/值对(即“prog.py keya valuea keyb valueb”)

解决方案不一定要用户友好,但确实需要程序友好。出于安全和资源考虑,第二个程序必须作为单独的进程运行。


Tags: 模块字符串py命令程序脚本字典进程
3条回答

如果您不需要太复杂的数据结构,我可以推荐simplejson吗?在Python2.6及更高版本中,它作为内置模块(称为json)提供。

除了pickle,如果字典只包含Python原语,另一个选项是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.

相关问题 更多 >

    热门问题