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 相关文章推荐
基于hashlib模块--加密(详解)
Jun 21 Python
Python实现的双色球生成功能示例
Dec 18 Python
python自动查询12306余票并发送邮箱提醒脚本
May 21 Python
浅析python继承与多重继承
Sep 13 Python
Python实现的栈、队列、文件目录遍历操作示例
May 06 Python
django框架事务处理小结【ORM 事务及raw sql,customize sql 事务处理】
Jun 27 Python
更新pip3与pyttsx3文字语音转换的实现方法
Aug 08 Python
感知器基础原理及python实现过程详解
Sep 30 Python
手把手教你Python yLab的绘制折线图的画法
Oct 23 Python
Python Numpy库常见用法入门教程
Jan 16 Python
使用tensorflow实现矩阵分解方式
Feb 07 Python
Python confluent kafka客户端配置kerberos认证流程详解
Oct 12 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上传图片、删除图片简单实例
2016/11/12 PHP
php工具型代码之印章抠图
2018/07/18 PHP
php tpl模板引擎定义与使用示例
2019/08/09 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
2020/12/16 PHP
获取元素距离浏览器周边的位置的方法getBoundingClientRect
2013/04/17 Javascript
JavaScript改变HTML元素的样式改变CSS及元素属性
2013/11/12 Javascript
jquery1.9 下检测浏览器类型和版本的方法
2013/12/26 Javascript
jquery常用方法及使用示例汇总
2014/11/08 Javascript
node.js中的fs.fstatSync方法使用说明
2014/12/15 Javascript
jQuery中is()方法用法实例
2015/01/06 Javascript
javascript每日必学之继承
2016/02/23 Javascript
JavaScript中输出信息的方法(信息确认框-提示输入框-文档流输出)
2016/06/12 Javascript
js控制一个按钮是否可点击(可使用)disabled的实例
2017/02/14 Javascript
js实现上下左右弹框划出效果
2017/03/08 Javascript
超出JavaScript安全整数限制的数字计算BigInt详解
2018/06/24 Javascript
微信小程序防止多次点击跳转和防止表单组件输入内容多次验证功能(函数防抖)
2019/09/19 Javascript
vue自定义指令实现仅支持输入数字和浮点型的示例
2019/10/30 Javascript
Python的网络编程库Gevent的安装及使用技巧
2016/06/24 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
python实现简单图片物体标注工具
2019/03/18 Python
Python递归函数 二分查找算法实现解析
2019/08/12 Python
Python使用urllib模块对URL网址中的中文编码与解码实例详解
2020/02/18 Python
VICHY薇姿英国官网:全球专业敏感肌护肤领先品牌
2017/07/04 全球购物
Rag & Bone官网:瑞格布恩高级成衣
2018/04/19 全球购物
美国购买体育赛事门票网站:TicketCity
2019/03/06 全球购物
澳大利亚设计师服装在线:MISHA
2019/10/07 全球购物
置业顾问岗位职责
2014/03/02 职场文书
高中生家长寄语大全
2014/04/03 职场文书
教研处工作方案
2014/05/26 职场文书
法院授权委托书格式
2014/09/28 职场文书
离婚协议书怎么写的
2014/12/14 职场文书
2015年政协委员工作总结
2015/05/20 职场文书
2016年度继续教育学习心得体会
2016/01/19 职场文书
jquery插件实现代码雨特效
2021/04/24 jQuery
nginx结合openssl实现https的方法
2021/07/25 Servers
Rhit高效可视化Nginx日志查看工具
2021/11/01 Servers