喜欢使用cmdln框架来编写类似的程序,svn command argument但该程序仅在Python 2中有效。有什么好的Python 3替代方案?
如果您cmdln仍然可以使用它,我想:使用上的2to3工具cmdln.py和示例p4.py,svn.py似乎可以生成有效的代码。的二元性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=()
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。