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 相关文章推荐
使用wxpython实现的一个简单图片浏览器实例
Jul 10 Python
Python中使用第三方库xlrd来写入Excel文件示例
Apr 05 Python
深入理解Django的自定义过滤器
Oct 17 Python
Python通过命令开启http.server服务器的方法
Nov 04 Python
pandas or sql计算前后两行数据间的增值方法
Apr 20 Python
Python实现中一次读取多个值的方法
Apr 22 Python
解决python中os.listdir()函数读取文件夹下文件的乱序和排序问题
Oct 17 Python
python迭代器常见用法实例分析
Nov 22 Python
pytorch程序异常后删除占用的显存操作
Jan 13 Python
Python figure参数及subplot子图绘制代码
Apr 18 Python
用python监控服务器的cpu,磁盘空间,内存,超过邮件报警
Jan 29 Python
用Python将GIF动图分解成多张静态图片
Jun 11 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
提升PHP执行速度全攻略(下)
2006/10/09 PHP
Uncaught exception com_exception with message Failed to create COM object
2012/01/11 PHP
CodeIgniter使用smtp服务发送html邮件的方法
2015/06/10 PHP
PHP+Apache+Mysql环境搭建教程
2016/08/01 PHP
浅谈PHP表单提交(POST&GET&URL编/解码)
2017/04/03 PHP
javascript图片相似度算法实现 js实现直方图和向量算法
2014/01/14 Javascript
javascript清空table表格的方法
2015/05/14 Javascript
JavaScript代码轻松实现网页内容禁止复制(代码简单)
2015/10/23 Javascript
jquery对复选框(checkbox)的操作汇总
2016/01/13 Javascript
JS基于clipBoard.js插件实现剪切、复制、粘贴
2016/05/03 Javascript
原生js实现倒计时功能(多种格式调用)
2017/01/12 Javascript
js利用for in循环获取 一个对象的所有属性以及值的实例
2017/03/30 Javascript
浅谈nodejs中的类定义和继承的套路
2017/07/26 NodeJs
JQuery判断正整数整理小结
2017/08/21 jQuery
JavaScript实现body内任意节点的自定义属性功能示例
2017/09/18 Javascript
微信小程序实现指定显示行数多余文字去掉用省略号代替
2018/07/25 Javascript
vue-自定义组件传值的实例讲解
2018/09/18 Javascript
关于ligerui子页面关闭后,父页面刷新,重新加载的方法
2019/09/27 Javascript
js canvas实现俄罗斯方块
2020/10/11 Javascript
详解Python爬虫的基本写法
2016/01/08 Python
详解Golang 与python中的字符串反转
2017/07/21 Python
Python做智能家居温湿度报警系统
2018/09/25 Python
十分钟搞定pandas(入门教程)
2019/06/21 Python
利用Python产生加密表和解密表的实现方法
2019/10/15 Python
基于python实现从尾到头打印链表
2019/11/02 Python
如何解决tensorflow恢复模型的特定值时出错
2020/02/06 Python
Python 如何测试文件是否存在
2020/07/31 Python
css3实现顶部社会化分享按钮示例
2014/05/06 HTML / CSS
SQL Server的固定数据库角色都有哪些?对应的服务器权限有哪些?
2013/05/18 面试题
社区七一党员活动方案
2014/01/25 职场文书
初中英语课后反思
2014/04/25 职场文书
行政专员岗位职责说明书
2014/07/30 职场文书
幼儿园迎国庆65周年活动策划方案
2014/09/16 职场文书
骆驼祥子读书笔记
2015/06/26 职场文书
表扬信范文
2019/04/22 职场文书
详解CocosCreator消息分发机制
2021/04/16 Javascript