相关疑难解决方法(0)

向Python 2反向移植Python 3(encoding ="utf-8")

我有一个为Python 3构建的Python代码库,它使用带有编码参数的Python 3样式open():

https://github.com/miohtama/vvv/blob/master/vvv/textlineplugin.py#L47

    with open(fname, "rt", encoding="utf-8") as f:
Run Code Online (Sandbox Code Playgroud)

现在我想将这个代码反向移植到Python 2.x,这样我就可以拥有一个适用于Python 2和Python 3的代码库.

什么是解决open()差异和缺乏编码参数的推荐策略?

我可以使用Python 3 open()样式的文件处理程序来处理字节串,所以它会像Python 2一样open()吗?

python python-2.7 python-3.x

144
推荐指数
4
解决办法
18万
查看次数

Python文件模式细节

在Python中,以下语句不起作用:

f = open("ftmp", "rw")
print >> f, "python"
Run Code Online (Sandbox Code Playgroud)

我收到错误:

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
IOError: [Errno 9] Bad file descriptor
Run Code Online (Sandbox Code Playgroud)

但是使用以下代码它可以工作:

g = open("ftmp", "r+")
print >> g, "python"
Run Code Online (Sandbox Code Playgroud)

看起来我需要修改文件模式.文件打开模式的深层复杂性是什么?

python file-io

12
推荐指数
2
解决办法
2万
查看次数

使用布尔表达式分配字符串

我试图从别人的项目中理解这段代码.如果您想要上下文,请访问:https://github.com/newsapps/beeswithmachineguns/blob/master/beeswithmachineguns/bees.py#L501

IS_PY2只是一个布尔变量,True如果Python主要版本是2.我知道非空字符串是True,但由于某种原因我不理解openmode被指定'w'或者'wt'而不是TrueFalse.

openmode = IS_PY2 and 'w' or 'wt'
openkwargs = IS_PY2 and {} or {'encoding': 'utf-8', 'newline': ''}
Run Code Online (Sandbox Code Playgroud)

有人能解释一下结果吗?

python python-2.7

6
推荐指数
2
解决办法
942
查看次数

Python 3:gzip.open()和模式

https://docs.python.org/3/library/gzip.html

我正在考虑使用gzip.open(),我对这个mode论点有点困惑:

模式参数可以是二进制模式的'r','rb','a','ab','w','wb','x'或'xb'中的任何一个,或'rt','at' ,'wt'或'xt'用于文本模式.默认值为'rb'.

那么'w'和之间的区别是什么'wb'

该文件表明它们都是二进制模式.

那么这是否意味着'w'和之间没有区别'wb'

python gzip mode python-3.x

4
推荐指数
1
解决办法
6797
查看次数

标签 统计

python ×4

python-2.7 ×2

python-3.x ×2

file-io ×1

gzip ×1

mode ×1