のように動作するプログラムを作成するためのcmdlnフレームワークが好きですが、Python2svn command argument
でのみ動作します。Python3の優れた代替手段は何ですか。
質問する
528 次
4 に答える
5
Python の標準ライブラリのargparse
モジュールもコマンドをサポートし、Python 2.x と 3.x の両方で動作します。
于 2012-07-14T13:14:11.670 に答える
2
あなたはセメントに興味があるかもしれません
于 2012-07-14T13:34:18.830 に答える
2
もしよろしければcmdln
、引き続きご利用いただけると思います:2to3
ツールcmdln.py
とサンプルp4.py
を使用すると、svn.py
動作するコードが生成されるようです。の 2 性はcmdln.py
、マイナーな構文上の問題と命名に限定されているようです。差分からランダムなビットを切り取る:
-LOOP_ALWAYS, LOOP_NEVER, LOOP_IF_EMPTY = range(3)
+LOOP_ALWAYS, LOOP_NEVER, LOOP_IF_EMPTY = list(range(3))
- except CmdlnUserError, ex:
+ except CmdlnUserError as ex:
- line = raw_input(self._prompt_str)
+ line = input(self._prompt_str)
- for marker, preprocessor in preprocessors.items():
+ for marker, preprocessor in list(preprocessors.items()):
- func = handler.im_func
- if func.func_defaults:
- func_defaults = list(func.func_defaults)
+ func = handler.__func__
+ if func.__defaults__:
+ func_defaults = list(func.__defaults__)
- co_argcount = handler.im_func.func_code.co_argcount
+ co_argcount = handler.__func__.__code__.co_argcount
- if DEBUG: print "dedent: indent=%d: %r" % (indent, line)
+ if DEBUG: print("dedent: indent=%d: %r" % (indent, line))
変換後、期待される出力を取得できるはずです。
localhost-2:examples $ python3 p4.py add
p4 add: opts={'filetype': None, 'changelist': None} paths=()
于 2012-07-14T13:24:26.853 に答える
1
Cliffはフル機能を備えており、積極的にメンテナンスされており、2.x と 3.x で動作します。
于 2012-07-14T13:14:17.350 に答える