2011-04-01 85 views
0

我想永久性地編輯Python腳本源代碼中的變量。用Python編輯Python腳本


例如,

urlpatterns = patterns('core.views', 
) 

urlpatterns = patterns('core.views', 
    url(r'^admin/', include(admin.site.urls)), 
) 

例如

items = [ 
    'unicorn', 
    'cats', 
] 

items = [ 
    'unicorn', 
    'cats', 
    'knights', 
    'panthers', 
] 

問題是捕獲單個可變,擴展它並更換它,蟒文件的來源可以是相當大的和多種多樣的。

這可能已經做了,但似乎無法找到。

任何想法,提示或建議?


我現在的解決方案:

我只是要在腳本文件

例如底部添加代碼

urlpatterns += patterns('core.views', 
    url(r'^admin/', include(admin.site.urls)), 
) 

作品現在:)

+1

@radianthex:你的問題並不十分清楚。你說你正在嘗試做某事,但不要說你嘗試過什麼,或者爲什麼它不起作用。你可以重新提出你的問題,使其更清楚嗎? – 2011-04-01 22:17:07

+0

你想使用python修改python腳本嗎?如果是這樣,爲什麼? 「導入」它,擴展它並使用它比在物理上修改源代碼更容易。 – 2011-04-01 22:19:16

+0

@Daniel:我知道,但我需要在源代碼中進行更改,因爲對於使用這些模塊的其他人而言,這將是更可取的。 – RadiantHex 2011-04-01 22:23:45

回答

1

Python源代碼,對於這件事情,一個文本文件,那麼你很可能打開它,讀/寫數據的常用方法。我不認爲這是一個令人驚訝的好主意,但如果你如果你從一個模板而產生寫某種類型的安裝...

1

,你可以使用普通的舊的字符串格式化:

tmpl = """import foo 

bar = 12345 

myList = [ 
    1, 
    2, 
    %s 
] 

otherStuff = %s""" 

# figure out the values that need to go there 

with f = open(filename, 'w+'): 
    f.write(tmpl % (item1, item2)) 

(或者代替硬編碼該字符串,你可以從文件中讀取它)

或者你可以使用one of the many templating engines for Python

+1

感謝您的回覆。我已經想到了這一點,不幸的是,我試圖支持儘可能多的腳本。只是列表/元組將會很好。 – RadiantHex 2011-04-01 22:38:14