2014-07-25 64 views
0

因此,我有一个python文件,我们称之为foo.py,位于远程服务器上。该文件基本上包含一个静态字典,然后由该服务器上的其他进程使用。我希望能够通过SSH连接到这个远程服务器并修改这个静态字典中的一些字段。到目前为止,我一直在使用模式匹配和sed来完成这项工作,但这是一种相当“肮脏”的方式(有时候更不用说复杂)。我想知道是否有更简单更简单的方法来实现这一目标?通过SSH修改静态Python字典

一些规则:我不想在本地复制文件,修改它并将其发回。另外,我不想将脚本复制到执行修改的服务器上。

+3

上移到数据库的时间。 – roippi

+0

不幸的是,这种情况不存在于我的手中:( – xlnc

+0

*你可能*使用sshfs来访问文件,它允许你通过ssh挂载远程文件系统 –

回答

0

您可以考虑使用专门为存储设计的文件类型,而不是使用Python字典进行存储,然后运行python脚本来解析它。 JSON与python字典非常相似,并且built-in json library使导入和导出非常简单。这甚至可以用于存储自定义的python类对象,只要它们可以被序列化即可。

为了从ssh会话编辑它,您可以启动一个python交互式shell,导入json,加载文件,进行编辑,然后将结果转储回文件。以下是一些示例用法:

$ ssh [email protected] 
[email protected]$ python 
>>> import json 
>>> store = dict(a=1, b=2, c=3, name='Jim') 
>>> with open('store.json', 'w') as f: 
...  json.dump(store, f) 
... 
>>> with open('store.json', 'r') as f: 
...  store2 = json.load(f) 
... 
>>> print store2 
{u'a': 1, u'c': 3, u'b': 2, u'name': u'Jim'} 
>>> store2['a'] = 4 
>>> print store2 
{u'a': 4, u'c': 3, u'b': 2, u'name': u'Jim'} 
>>> with open('store.json', 'w') as f: 
...  json.dump(store, f) 
+0

我知道使用JSON,但是,这不是一个选项,我有一个.py文件,里面有一个静态定义的字典,我想修改静态字典本身中的一对字段 – xlnc

+0

嗯,好吧,但如果你有权访问python脚本,为什么你不能修改它从JSON文件加载字典? –

+0

因为python脚本是容纳字典本身的东西,调用它的脚本有点误导因为从字面上来说,这个python文件中的所有内容都是静态定义的字典。 – xlnc