自动将python 2.7向后移植到2.6
我需要在Python2.6下运行一些Python2.7代码,我想知道如何实现自动化 下面是一些具体的简单更改自动将python 2.7向后移植到2.6,python,python-2.7,sed,backport,Python,Python 2.7,Sed,Backport,我需要在Python2.6下运行一些Python2.7代码,我想知道如何实现自动化 下面是一些具体的简单更改 sed -i -e 's/:,d/:d/g' -e 's/{0}/set([0])/g' foo.py 但是,我也需要更换 with open(foo) as f, open(bar) as b: ... 与 这对我来说不太明显(我需要正确的缩进,我的sed-foo在这里是不够的) 有什么建议吗?没有,不要使用sed。您需要的是一个理解重构或宏的IDE。例如,下面是我在vim
sed -i -e 's/:,d/:d/g' -e 's/{0}/set([0])/g' foo.py
但是,我也需要更换
with open(foo) as f, open(bar) as b:
...
与
这对我来说不太明显(我需要正确的缩进,我的sed
-foo在这里是不够的)
有什么建议吗?没有,不要使用
sed
。您需要的是一个理解重构或宏的IDE。例如,下面是我在vim
中要做的事情:
- 搜索A为A、B为B的
模式:
- 开始录制宏
qa
- 找到逗号
f,
- 将其替换为冒号
r:
- 删除空格,然后输入换行符
lx
- 制表符或使用空格缩进
- 按
停止录制q
然后重复搜索并按
@a
重播宏。您的代码库中是否真的有那么多带有x,y语句的值得自动替换而不是简单地自动发现?我认为在一般情况下,sed
不适合做这项工作——你可能会想使用Python自己的AST
模块或类似的东西——真正理解Python缩进的东西。@JohnZwinck:我希望有人已经有了这方面的东西;当然,我们可以手动完成,但我认为自动化更可靠。这假设我希望更改是永久性的(如committed to git)。我不希望这样。如果您使用git,有什么问题?创建一个专门为Python 2.6代码设计的分支。分支是分散的,因此您不必推送代码。
with open(foo) as f:
with open(bar) as b:
...