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中的lstrip()方法使用简介
May 19 Python
在主机商的共享服务器上部署Django站点的方法
Jul 22 Python
Ubuntu 16.04 LTS中源码安装Python 3.6.0的方法教程
Dec 27 Python
python中利用xml.dom模块解析xml的方法教程
May 24 Python
python用户管理系统
Mar 13 Python
Python中print函数简单使用总结
Aug 05 Python
python打印直角三角形与等腰三角形实例代码
Oct 20 Python
基于Django统计博客文章阅读量
Oct 29 Python
Python图像处理库PIL的ImageDraw模块介绍详解
Feb 26 Python
tensorflow pb to tflite 精度下降详解
May 25 Python
python定义类的简单用法
Jul 24 Python
Python实现手势识别
Oct 21 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中使用Oracle数据库(5)
2006/10/09 PHP
落伍首发 php+mysql 采用ajax技术的 省 市 地 3级联动无刷新菜单 源码
2006/12/16 PHP
php下用GD生成生成缩略图的两个选择和区别
2007/04/17 PHP
如何使用PHP获取指定日期所在月的开始日期与结束日期
2013/08/01 PHP
PHP版微信小店接口开发实例
2016/11/12 PHP
js字符编码函数区别分析
2008/06/05 Javascript
Javascript中的var_dump函数实现代码
2009/09/07 Javascript
js清空表单数据的两种方式(遍历+reset)
2014/07/18 Javascript
javascript实现复选框选中属性
2015/03/25 Javascript
thinkphp实现无限分类(使用递归)
2015/12/19 Javascript
js 判断一组日期是否是连续的简单实例
2016/07/11 Javascript
node.js报错:Cannot find module 'ejs'的解决办法
2016/12/14 Javascript
AngularJS Select(选择框)使用详解
2017/01/18 Javascript
JS+HTML实现的圆形可点击区域示例【3种方法】
2018/08/01 Javascript
Layui数据表格之获取表格中所有的数据方法
2018/08/20 Javascript
Angular动态绑定样式及改变UI框架样式的方法小结
2018/09/03 Javascript
vue template中slot-scope/scope的使用方法
2018/09/06 Javascript
关于微信公众号开发无法支付的问题解决
2018/12/28 Javascript
JQuery获取元素尺寸、位置及页面滚动事件应用示例
2019/05/14 jQuery
NodeJs crypto加密制作token的实现代码
2019/11/15 NodeJs
python下如何让web元素的生成更简单的分析
2008/07/17 Python
python实现基于两张图片生成圆角图标效果的方法
2015/03/26 Python
Python数据分析之双色球基于线性回归算法预测下期中奖结果示例
2018/02/08 Python
django manage.py扩展自定义命令方法
2018/05/27 Python
python 处理string到hex脚本的方法
2018/10/26 Python
python3实现绘制二维点图
2019/12/04 Python
python IP地址转整数
2020/11/20 Python
CSS3制作3D立方体loading特效
2020/11/09 HTML / CSS
美国知名的在线旅游服务网站:Priceline
2016/07/23 全球购物
莫斯科绝对前卫最秘密的商店:SVMoscow
2017/10/23 全球购物
大学生军训广播稿
2014/01/24 职场文书
小学生优秀评语大全
2014/04/22 职场文书
党员教师自我剖析材料
2014/09/29 职场文书
学院党的群众路线教育实践活动第一阶段情况汇报
2014/10/25 职场文书
证券公司客户经理岗位职责
2015/04/09 职场文书
同意转租证明
2015/06/24 职场文书