Chr*_*ams 5 python command-line
如何通过命令行从另一个python脚本将字典传递给python脚本?我使用subprocess来调用第二个脚本.
我得到的选项是:
I)构建一个模块来解析字符串中的字典(比我希望的更深入).
II)使用临时文件编写pickle,并将文件名作为参数传递
III)不允许使用字典,但处理键/值对(即"prog.py keya valuea keyb valub")
解决方案不一定是用户友好的,但确实需要程序友好.由于安全性和资源问题,第二个程序必须作为单独的进程运行.
您是否看过pickle模块以通过stdout/stdin传递数据?
例:
knights.py:
import pickle
import sys
desires = {'say': 'ni', 'obtain': 'shrubbery'}
pickle.dump(desires, sys.stdout)
Run Code Online (Sandbox Code Playgroud)
roundtable.py:
import pickle
import sys
knightsRequest = pickle.load(sys.stdin)
for req in knightsRequest:
print "The knights %s %s." % (req, knightsRequest[req])
Run Code Online (Sandbox Code Playgroud)
用法和输出:
$ python knights.py | python roundtable.py
The knights say ni.
The knights obtain shrubbery.
Run Code Online (Sandbox Code Playgroud)
除此之外pickle,另一个选择是ast.literal_eval,如果你的词典只包含Python原语.
>>> 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'}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5896 次 |
| 最近记录: |