2016-05-11 10 views
1

Python 2.6でいくつかのPython 2.7コードを実行する必要があり、どのように自動化できるのか不思議でした。Python 2.7から2.6へのバックポートを自動的に

いくつかの特定の単純な変更は、しかし、私はまた

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

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

を交換する

sed -i -e 's/:,d/:d/g' -e 's/{0}/set([0])/g' foo.py 

必要があると私はする必要があります(それは私のためにはるかに少ない明らかですインデントを正しく取得してください。ここではsed -fooで十分ではありません)。

提案がありますか?

+2

あなたのコードベースには本当に多くの 'x、y'ステートメントがありますか?発見を自動化するのではなく、置換を自動化する価値がありますか?私は 'sed'が一般的なケースでこの仕事に就いているとは思っていません - Python独自の' AST'モジュールなどを使用したいと思うでしょう - 実際のPythonインデントを理解するもの。 –

+0

@JohnZwinck:私は誰かがすでにこのために何かを持っていることを望みました。私たちはそれを手動で行うこともできますが、自動化はより信頼性が高いと思います。 – sds

答えて

1

いいえ、sedを使用しないでください。必要なのは、リファクタリングやマクロを理解するIDEです。例えば、ここで私はvimにどうなるのかです:マクロqa

  • コンマf,

  • はと交換して検索を記録with A as a, with B as B:パターン

  • スタートのため

    • を検索結腸r:

    • そして、あなたが検索を反復処理し、再生する@aを押して改行lx<enter>

    • タブを入力するか、

    の記録を停止する

  • 押しqをインデントするスペースを使用した後のスペースを削除します。マクロ。

  • +0

    これは、変更を永続的にしたいと仮定しています(gitにコミットされているように)。私はそれを望んでいない。 – sds

    +1

    @sds gitを使っているのであれば、何が問題なのですか? Python 2.6コード用に特別に設計されたブランチを作成します。ブランチは分散されているので、コードをプッシュする必要はありません。 – user6321384

    関連する問題