Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python-2to3:Python2和Python3的安全修复程序集_Python_Python 2to3 - Fatal编程技术网

Python-2to3:Python2和Python3的安全修复程序集

Python-2to3:Python2和Python3的安全修复程序集,python,python-2to3,Python,Python 2to3,Python2to3修复程序的哪个子集输出有效的Python2代码 我不想一下子就转到Python3,而是希望使用2to3来实现这一点,将真正棘手的事情(例如unicode更改)留到以后再做,或者可能使用six来支持这两种功能。我希望初始过程由2to3完成,但我希望它生成有效的Python2代码作为中间步骤 注意:我知道,但它没有得到真正的回答。我想你找不到答案。你最好的方法是使用#!语法指示要使用的Python,并在准备好使用每种Python时使用2to3。(如果您使用的是Windows,请查

Python2to3修复程序的哪个子集输出有效的Python2代码

我不想一下子就转到Python3,而是希望使用2to3来实现这一点,将真正棘手的事情(例如unicode更改)留到以后再做,或者可能使用
six
来支持这两种功能。我希望初始过程由
2to3
完成,但我希望它生成有效的Python2代码作为中间步骤


注意:我知道,但它没有得到真正的回答。

我想你找不到答案。你最好的方法是使用#!语法指示要使用的Python,并在准备好使用每种Python时使用2to3。(如果您使用的是Windows,请查看以简化共存。)

我有一个我写的模块,需要与2和3一起工作;我在顶部有这样的代码:

import sys
PYTHON3 = sys.version_info.major == 3
PYTHON2 = sys.version_info.major == 2

if PYTHON2:
    import StringIO
    stringio = StringIO.StringIO
    bytesio = StringIO.StringIO # In Python2, stringIO takes strings of binary data
    import urllib2
    URL_open = urllib2.urlopen
    HTTPError = urllib2.HTTPError

if PYTHON3:
    import io
    stringio = io.StringIO
    bytesio  = io.BytesIO # In Python3, use BytesIO for binary data
    import urllib.request
    URL_open = urllib.request.urlopen
    import urllib.error
    HTTPError = urllib.error.HTTPError
分散在以下各个方面:

if PYTHON2:
    f = stringio(self.XMLData)
if PYTHON3:
    f = bytesio(self.XMLData.encode(encoding="utf-8"))
这并不是说有一种表达方式可以在两种系统中都起作用。你需要很多这样的补丁。除非你有一个用例(像这样),你必须在一个模块中同时支持Python2和Python3


我的用例相对简单。您所指的内容指向深入Python,它显示了有多少内容是不同的,其中许多内容是不兼容的,需要大量的条件编码,如上所述。我不推荐。

我想你找不到。你最好的方法是使用#!语法指示要使用的Python,并在准备好使用每种Python时使用2to3。(如果您使用的是Windows,请查看以简化共存。)

我有一个我写的模块,需要与2和3一起工作;我在顶部有这样的代码:

import sys
PYTHON3 = sys.version_info.major == 3
PYTHON2 = sys.version_info.major == 2

if PYTHON2:
    import StringIO
    stringio = StringIO.StringIO
    bytesio = StringIO.StringIO # In Python2, stringIO takes strings of binary data
    import urllib2
    URL_open = urllib2.urlopen
    HTTPError = urllib2.HTTPError

if PYTHON3:
    import io
    stringio = io.StringIO
    bytesio  = io.BytesIO # In Python3, use BytesIO for binary data
    import urllib.request
    URL_open = urllib.request.urlopen
    import urllib.error
    HTTPError = urllib.error.HTTPError
分散在以下各个方面:

if PYTHON2:
    f = stringio(self.XMLData)
if PYTHON3:
    f = bytesio(self.XMLData.encode(encoding="utf-8"))
这并不是说有一种表达方式可以在两种系统中都起作用。你需要很多这样的补丁。除非你有一个用例(像这样),你必须在一个模块中同时支持Python2和Python3


我的用例相对简单。您所指的内容指向深入Python,它显示了有多少内容是不同的,其中许多内容是不兼容的,需要大量的条件编码,如上所述。我不推荐它。

我最近发现了一个工具
futurize
,可以为您实现这一点。在EPEL中,CentOS 6甚至有一个RPM(我在一些工作机器上一直使用它)——它是python未来的

-阶段1是“为python 3做准备,同时保持与库存包的兼容性”。我发现第2阶段需要安装其他软件包,但在复制脚本时,其他机器上不可用

一个例子:
futurize-l-f all-f成语-f ws_逗号-x长*py


添加
-w
将为您写回更改。

我最近发现了一个工具
futurize
,可以为您做这项工作。在EPEL中,CentOS 6甚至有一个RPM(我在一些工作机器上一直使用它)——它是python未来的

-阶段1是“为python 3做准备,同时保持与库存包的兼容性”。我发现第2阶段需要安装其他软件包,但在复制脚本时,其他机器上不可用

一个例子:
futurize-l-f all-f成语-f ws_逗号-x长*py

添加
-w
将为您写回更改