2011-04-01 79 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