2014-07-25 100 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