2

のように動作するプログラムを作成するためのcmdlnフレームワークが好きですが、Python2svn command argumentでのみ動作します。Python3の優れた代替手段は何ですか。

4

4 に答える 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 に答える