2024-03-29 14:54:08 发布
网友
我的windows语言是中文。 为了说明我的观点,我使用包pathlib。你知道吗
pathlib
from pathlib import * rootdir=Path(r'D:\新建文件夹') print(rootdir.exists())
Python2.7我得到了False
Python2.7
False
Python3我得到了True
Python3
True
有什么想法吗?谢谢你的建议。你知道吗
对于Python2.7,可以使用“pip install pathlib”安装pathlib
pip install pathlib
python2和python3之间的主要区别在于处理文本和字节的基本类型。在python3上,我们有一个文本类型:str,它保存Unicode数据和两个字节类型bytes和bytearray。你知道吗
str
bytes
bytearray
另一方面,在Python2上,我们有两种文本类型:str,无论出于何种目的,它都被限制为ASCII+7位范围以上的一些未定义数据,unicode相当于Python3str类型和它从Python3继承的单字节类型bytearray。你知道吗
python3删除了所有不能从字节转换为Unicode的编解码器,反之亦然,并删除了字节上现在无用的.encode()方法和字符串上的.decode()方法。你知道吗
.encode()
.decode()
更多信息,例如here。你知道吗
在Python中,3个字符串默认为Unicode。在python2中,它们是在源文件编码中编码的字节字符串。在python2中使用Unicode字符串。你知道吗
还要确保声明源文件编码,并确保源文件保存在该编码中。你知道吗
#coding:utf8 from pathlib import * rootdir=Path(ur'D:\新建文件夹') print(rootdir.exists())
对Windows路径使用Unicode文本:在顶部添加from __future__ import unicode_literals。你知道吗
from __future__ import unicode_literals
r'D:\新建文件夹'
# -*- coding: utf-8 -*-
如果源代码编码不同于“ANSI”编码(例如cp1252),那么结果可能不同:字节按原样传递(相同的字节序列可以在不同的编码中表示不同的字符)。如果文件名不能用“ANSI”编码表示(例如,cp1252 a单字节编码不能表示所有Unicode字符,大约有一百万个Unicode字符,但只有256个字节);结果可能会有所不同。在Windows上对文件名使用Unicode字符串可以解决这两个问题。你知道吗
python2和python3之间的主要区别在于处理文本和字节的基本类型。在python3上,我们有一个文本类型:
str
,它保存Unicode数据和两个字节类型bytes
和bytearray
。你知道吗另一方面,在Python2上,我们有两种文本类型:
str
,无论出于何种目的,它都被限制为ASCII+7位范围以上的一些未定义数据,unicode相当于Python3str
类型和它从Python3继承的单字节类型bytearray
。你知道吗python3删除了所有不能从字节转换为Unicode的编解码器,反之亦然,并删除了字节上现在无用的
.encode()
方法和字符串上的.decode()
方法。你知道吗更多信息,例如here。你知道吗
在Python中,3个字符串默认为Unicode。在python2中,它们是在源文件编码中编码的字节字符串。在python2中使用Unicode字符串。你知道吗
还要确保声明源文件编码,并确保源文件保存在该编码中。你知道吗
对Windows路径使用Unicode文本:在顶部添加
from __future__ import unicode_literals
。你知道吗说明
r'D:\新建文件夹'
是python2上的bytestring。它的具体值取决于顶部的编码声明(例如# -*- coding: utf-8 -*-
)。如果在python2中使用非ascii文本,则应该得到一个没有声明的错误。r'D:\新建文件夹'
是python3上的Unicode字符串,默认的源代码编码是utf-8(不需要编码声明)如果源代码编码不同于“ANSI”编码(例如cp1252),那么结果可能不同:字节按原样传递(相同的字节序列可以在不同的编码中表示不同的字符)。如果文件名不能用“ANSI”编码表示(例如,cp1252 a单字节编码不能表示所有Unicode字符,大约有一百万个Unicode字符,但只有256个字节);结果可能会有所不同。在Windows上对文件名使用Unicode字符串可以解决这两个问题。你知道吗
相关问题 更多 >
编程相关推荐