【问题标题】:Automatically backport python 2.7 to 2.6自动将 python 2.7 反向移植到 2.6
【发布时间】:2016-09-07 04:46:04
【问题描述】:

我需要在 Python 2.6 下运行一些 Python 2.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:
    ...

with open(foo) as f:
 with open(bar) as b:
    ...

这对我来说不太明显(我需要正确缩进,我的sed-foo 在这里还不够)。

有什么建议吗?

【问题讨论】:

  • 你的代码库中真的有那么多 with x, y 语句值得自动化替换它们而不是简单地自动化它们的发现吗?我不认为sed 在一般情况下适合这项工作——你可能想使用 Python 自己的 AST 模块或类似的模块——真正理解 Python 缩进的东西。
  • @JohnZwinck:我希望有人已经对此有所了解;当然,我们可以手动完成,但我认为自动化更可靠。

标签: python python-2.7 sed backport


【解决方案1】:

不,不要使用sed。您需要的是一个理解重构或宏的 IDE。例如,这是我在vim 中要做的:

  • 搜索with A as a, with B as B: 模式

  • 开始录制宏qa

  • 找到逗号f,

  • 将其替换为冒号r:

  • 删除空格然后输入换行符lx<enter>

  • Tab 或使用空格来缩进

  • q停止录制

然后您遍历搜索并按@a 重播宏。

【讨论】:

  • 这假设我希望更改是永久性的(如提交给 git)。我不想那样。
  • @sds 如果您使用 git,有什么问题?创建一个专为 Python 2.6 代码设计的分支。分支是去中心化的,因此您无需推送代码。
猜你喜欢
  • 2015-06-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-25
  • 2020-08-17
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多