问题标签 [python-2to3]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
python - 如何使用 2to3 就地编辑文件?
我能够2to3
在终端中加载文件。它进行了大量打印,输出如下:
但是该文件没有更改。而且我在“运行”之后没有任何指令2to3
。请帮忙。
python - 尝试使用 2to3.py 将 python 代码转换为 python34 时出现无法解析错误
当我尝试将一些 python2.7 代码转换为 python3 时,我遇到了一些错误。我知道这段代码在 python2.7 中有效。但是,当我尝试使用 2to3.py 将其转换为 python3 时,我收到此错误:
搜索互联网后,我看到有人说添加 -p 可以解决问题,但是当我添加时,我只会收到新错误:
我不知道查看原始文件是否会有所帮助,但它有几千行。任何帮助都将非常感激。谢谢!
-雷切尔
python-3.x - Python 2to3,有条件地迭代列表(过滤器与列表理解)
2to3
我正在使用该工具从 Py2 -> Py3 移植一堆脚本。一个特别建议的更改让我有点困惑,所以我很感激一些帮助:
原行是:
hm_regions
持有namedtuples
一个名为的属性dir
,并使用此循环遍历与给定方向参数匹配的那些。
建议的更改是
我知道这基本上做同样的事情,所以理论上结果应该不会改变(没有尝试过)。但我发现双for
循环非常难看,而且我想这不是最漂亮、最优雅的迭代方式。
我也尝试过for r in hm_regions if r.dir == direction:
由于语法错误而失败,这有点令人沮丧。
编辑:这里的另一个问题是改变是否有意义?我意识到建议更改的潜在动机是filter
不再返回列表。但在这种情况下,我不使用列表,只是迭代它。因此它应该也能正常工作,对吧?
python - 2to3 - 如何保留输入文件中的换行符?
我正在尝试2to3
在 *.py 文件具有 Unix 风格的结束行字符的 Windows 机器上运行。运行2to3
修改输出文件中的换行符。
MCVE:
print2.py 之前的内容
执行的命令:
print2.py 之后的内容
预期内容:
执行转换时是否可以保留旧的换行符2to3
?
python - 2to3 说“不需要更改”,然后是“需要修改的文件”
我跑2to3 -f all -f idioms -f buffer -f set_literal -f ws_comma foo.py
输出:
内容foo.py
:
我如何解释这个输出?
python - 如果脚本仅在 Python2.7 的 github 上可用,他们是否也应该在 Python3.x 中同时发布这些脚本?替换2.7代码?
有大量用 python2.7 编写的用于学术研究的脚本/代码只能在合作者的 github 存储库中获得。问题是有一天它应该被移植到python3.x。
目前,用户只需下载python2.7代码,应用python的2to3,使用这个代码是正确的标准吗?(我想如果 2to3 不能正常工作,我会通过电子邮件向所有者发送电子邮件……)也就是说,由用户来生成 python3.x 代码。
或者移植此代码并请求用户将其推送给整个社区使用对我有用吗?在这种情况下,两个版本都应该可以使用吗?或者我应该要求所有者将python2.7代码替换为新的python python3.x代码?
目前的标准是什么?
python-3.x - 通过 pip 安装 BeautifulSoup4 会产生 Python 3.5 的导入错误
我正在尝试为 Python 3.5 安装 beautifulsoup4,但是,当我调用“import bs4”在 Python 3.5.2 shell 中进行测试时,我收到了以下错误:
Traceback(最近一次调用最后一次):文件“”,第 1 行,在导入 bs4 文件“C:\Users\Dan\AppData\Local\Programs\Python\Python35\lib\bs4__init__.py”,第 53 行'你正在尝试在 Python 3 下运行 Python 2 版本的 Beautiful Soup。这将不起作用。'<>'您需要转换代码,方法是安装它 (
python setup.py install
) 或运行 2to3 (2to3 -w bs4
)。^ SyntaxError: 无效的语法
我按照以下路径运行 pip 来最初安装 beatifulsoup4,我用来安装公司代理的命令是:$ pip install --proxy=proxy.com beautifulsoup4
C:\Users\Dan\AppData\Local\Programs\Python\Python35\Scripts
我之前在这台计算机上安装了 Python 2.7,但是在安装 3.5 时我将其卸载。如果我没有正确卸载 Python 2.7,pip 可能无法安装和转换 bs4 为 3.5 吗?我也尝试使用 Requests 模块执行这些相同的步骤。我尝试使用 Python shell 推荐的命令进行转换,但我尝试使用“2to3”也失败了。任何帮助表示赞赏。
python-3.x - 将 2to3 输出重定向到新文件
当我运行2to3.py -w my_script.py
它时,它会转换my_script.py
为 Python3,然后放入原始版本my_script.py.bak
。
我希望旧文件保持原样,并将转换后的文件放入一个新文件中,例如my_script.converted.py
. 有没有2to3.py
允许这样做的论点?
python - 如何使用2to3翻译目录中的所有文件
我可以翻译一个文件。但我不明白如何翻译整个目录。来自文档:
你能给我一个具体的例子吗?我有 python2 文件,D:\Dir1
想在D:\Dir2
. 我现在在命令提示符里面Dir1
输入c:\Users\........\Python36\Tools\scripts\2to3.py -w
那么我应该使用什么命令?
python - 如何将“__slots__”从 Python 2 移植到 3
我必须将遗留代码(~60K LOC)从 Python 2 移植到 3,它有几千个结构,如下所示:
此代码适用于 Python 2,但不能使用 Python 3 编译,要解决它,我需要将其更改为
鉴于必须对如此大的文件多次执行此更改,什么是处理此更改的有效方法?
我们必须考虑到该类可能已经有也可能没有__init__
函数定义,并且也可以有嵌套的类定义。
这是我到目前为止所尝试的。
2to3
不认为这是一个问题,因此不会改变它。- 一种可能的方法是使用
ast
模块来修改内存中的解析树,然后用它unparse
来写回修改后的代码。但这并不简单。 - 如果没有其他工作,我会考虑编写一个简单的 Shell/Python 脚本,它将读取源文件、进行更改并将其写回。
是否有另一种快速简单的方法来处理此更改。