Python2.7版os.path.isdir中文路径返回false的解决方法


Posted in Python onJune 21, 2019

问题背景:

本来想写一个脚本来处理硬盘里的文件,并进行分类处理,但是发现一个问题,使用python内置os模块里的方法出现一些问题,具体的见示例。

主要使用的方法(python 2.7版本)

示例:

在电脑的D盘下建立两个文件夹,并在两个文件夹下分别建立两个文件及目录:

a: D:\\test\\test.txt

b: D:\测试\测试.txt

分别使用a,b路径来测试os.path的几个方法

#!/usr/bin/env python
# -*- coding: utf-8 -*-
 
import os
a = "D:\\test\\test.txt"
b = "D:\测试\测试.txt"
 
print "a文件是否存在?" + str(os.path.exists(a))
print "a路径是绝对路径?" + str(os.path.isabs(a))
print "a是目录?" + str(os.path.isdir(a))
print "a是文件?" + str(os.path.isfile(a))
print "================================="
print "b文件是否存在?" + str(os.path.exists(b))
print "b路径是绝对路径?" + str(os.path.isabs(b))
print "b是目录?" + str(os.path.isdir(b))
print "b是文件?" + str(os.path.isfile(b))

执行后得到的结果是:

a文件是否存在?True
a路径是绝对路径?True
a是目录?False
a是文件?True
=================================
b文件是否存在?False
b路径是绝对路径?True
b是目录?False
b是文件?False

我们可以预想一下,这两个路径执行后的结果应该是一致的,当然结果并不是一致的,因为什么呢?刚刚的执行结果使用的是ide,我们使用Python的交互式命令行来试试

>>> a = "D:\\test\\test.txt"
>>> print "a文件是否存在?" + str(os.path.exists(a))
a文件是否存在?True
>>> print "a路径是绝对路径?" + str(os.path.isabs(a))
a路径是绝对路径?True
>>> print "a是目录?" + str(os.path.isdir(a))
a是目录?False
>>> print "a是文件?" + str(os.path.isfile(a))
a是文件?True
>>> b = "D:\测试\测试.txt"
>>> print "b文件是否存在?" + str(os.path.exists(b))
b文件是否存在?True
>>> print "b路径是绝对路径?" + str(os.path.isabs(b))
b路径是绝对路径?True
>>> print "b是目录?" + str(os.path.isdir(b))
b是目录?False
>>> print "b是文件?" + str(os.path.isfile(b))
b是文件?True

这时候就有尴尬了,这里执行的结果是一致的,所以要么是ide问题,要么是编码问题。通过实验最后证明是编码的问题

import os
a = "D:\\test\\test.txt"
b = u"D:\测试\测试.txt"
 
print "a文件是否存在?" + str(os.path.exists(a))
print "a路径是绝对路径?" + str(os.path.isabs(a))
print "a是目录?" + str(os.path.isdir(a))
print "a是文件?" + str(os.path.isfile(a))
 
print "b文件是否存在?" + str(os.path.exists(b))
print "b路径是绝对路径?" + str(os.path.isabs(b))
print "b是目录?" + str(os.path.isdir(b))
print "b是文件?" + str(os.path.isfile(b))

执行结果

a文件是否存在?True
a路径是绝对路径?True
a是目录?False
a是文件?True
==========================
b文件是否存在?True
b路径是绝对路径?True
b是目录?False
b是文件?True

好了,现在一致了,代码中可以看出,只是在b的路径上加了一个u(表示将字符串变成了Unicode编码的字符串了),由此可以看出在python2.7版本里中文编码问题有多么严峻,这种仅仅加u的方式肯定不行,建议使用Python的unicode方法来转化。

解决方法:

b = "D:\测试\测试.txt"
b = unicode(b, 'utf-8')

总结:中文问题,应该是python2.7比较头疼的问题,3以上应该比较好,不用担心这个问题,随后在处理路径上或其他涉及中文内容的时候,不管是英文还是中文,都可以加上unicode(content, encoding)一步来确保无误,希望本文能帮到你。

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python 除法小技巧
Sep 06 Python
Python的Django中django-userena组件的简单使用教程
May 30 Python
Python处理json字符串转化为字典的简单实现
Jul 07 Python
python 安装virtualenv和virtualenvwrapper的方法
Jan 13 Python
Python调用服务接口的实例
Jan 03 Python
python 列表输出重复值以及对应的角标方法
Jun 11 Python
Django 导出项目依赖库到 requirements.txt过程解析
Aug 23 Python
python实现一个函数版的名片管理系统过程解析
Aug 27 Python
Python小程序 控制鼠标循环点击代码实例
Oct 08 Python
解决pytorch报错:AssertionError: Invalid device id的问题
Jan 10 Python
使用Pycharm分段执行代码
Apr 15 Python
python获取系统内存占用信息的实例方法
Jul 17 Python
pyqt5与matplotlib的完美结合实例
Jun 21 #Python
django框架防止XSS注入的方法分析
Jun 21 #Python
pyqt5中QThread在使用时出现重复emit的实例
Jun 21 #Python
python发送多人邮件没有展示收件人问题的解决方法
Jun 21 #Python
pyqt5让图片自适应QLabel大小上以及移除已显示的图片方法
Jun 21 #Python
django框架使用orm实现批量更新数据的方法
Jun 21 #Python
python字典改变value值方法总结
Jun 21 #Python
You might like
JS 网站性能优化笔记
2011/05/24 PHP
ueditor 1.2.6 使用方法说明
2013/07/24 PHP
PHP中使用register_shutdown_function函数截获fatal error示例
2015/04/21 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
学习PHP Cookie处理函数
2016/08/09 PHP
PHP获取ttf格式文件字体名的方法示例
2019/03/06 PHP
javascript实现二分查找法实现代码
2007/11/12 Javascript
js获取TreeView控件选中节点的Text和Value值的方法
2012/11/24 Javascript
js实现登陆遮罩效果的方法
2015/07/28 Javascript
js replace(a,b)之替换字符串中所有指定字符的方法
2016/08/17 Javascript
Angularjs中的页面访问权限怎么设置
2016/11/11 Javascript
JS实用的带停顿的逐行文本循环滚动效果实例
2016/11/23 Javascript
javascript中json基础知识详解
2017/01/19 Javascript
深入讲解xhr(XMLHttpRequest)/jsonp请求之abort
2017/07/26 Javascript
ligerUI---ListBox(列表框可移动的实例)
2017/11/28 Javascript
VUEJS 2.0 子组件访问/调用父组件的实例
2018/02/10 Javascript
jQuery选择器之基本选择器用法实例分析
2019/02/19 jQuery
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
vue-cli2与vue-cli3在一台电脑共存的实现方法
2019/09/25 Javascript
python协程用法实例分析
2015/06/04 Python
深入理解python try异常处理机制
2016/06/01 Python
python图像常规操作
2017/11/11 Python
Python图像处理之gif动态图的解析与合成操作详解
2018/12/30 Python
pycharm通过anaconda安装pyqt5的教程
2020/03/24 Python
django数据模型中null和blank的区别说明
2020/09/02 Python
详解anaconda安装步骤
2020/11/23 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
在HTML5中使用MathML数学公式的简单讲解
2016/02/19 HTML / CSS
HOTEL INFO英国:搜索全球酒店
2019/08/08 全球购物
教师批评与自我批评总结
2014/10/16 职场文书
销售员岗位职责
2015/02/10 职场文书
小学德育工作总结2015
2015/05/12 职场文书
毕业生入职感言
2015/07/31 职场文书
Python包argparse模块常用方法
2021/06/04 Python
如何更改Win11声音输出设备?Win11声音输出设备四种更改方法
2022/04/08 数码科技
CSS 鼠标点击拖拽效果的实现代码
2022/12/24 HTML / CSS