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 fabric实现远程操作和部署示例
Mar 25 Python
Python 列表排序方法reverse、sort、sorted详解
Jan 22 Python
python利用拉链法实现字典方法示例
Mar 25 Python
python读取中文txt文本的方法
Apr 12 Python
使用Python批量修改文件名的代码实例
Jan 24 Python
python调用webservice接口的实现
Jul 12 Python
Python使用mongodb保存爬取豆瓣电影的数据过程解析
Aug 14 Python
如何使用python3获取当前路径及os.path.dirname的使用
Dec 13 Python
Python+PyQt5+MySQL实现天气管理系统
Jun 16 Python
用opencv给图片换背景色的示例代码
Jul 08 Python
浅谈Python项目的服务器部署
Apr 25 Python
python如何正确使用yield
May 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
Windows中安装Apache2和PHP4权威指南
2006/11/18 PHP
详解PHP内置访问资源的超时时间 time_out file_get_contents read_file
2013/06/03 PHP
PHP中使用asort进行中文排序失效的问题处理
2014/08/18 PHP
PHP判断IP并转跳到相应城市分站的方法
2015/03/25 PHP
php使用ob_flush不能每隔一秒输出原理分析
2015/06/02 PHP
PHP中递归的实现实例详解
2017/11/14 PHP
Phpstorm+Xdebug断点调试PHP的方法
2018/05/14 PHP
经常用的图片在容器中的水平垂直居中实例
2007/06/10 Javascript
javascript-简单的日历实现及Date对象语法介绍(附图)
2013/05/30 Javascript
JavaScript使用yield模拟多线程的方法
2015/03/19 Javascript
jQuery+PHP+Mysql实现抽奖程序
2020/04/12 jQuery
AngularJS入门教程一:路由用法初探
2017/05/27 Javascript
基于LayUI分页和LayUI laypage分页的使用示例
2017/08/02 Javascript
Angular模版驱动表单的使用总结
2018/05/05 Javascript
node.js遍历目录的方法示例
2018/08/01 Javascript
小程序云开发如何实现图片上传及发表文字
2019/05/17 Javascript
js数组中去除重复值的几种方法
2020/08/03 Javascript
vue 项目中当访问路由不存在的时候默认访问404页面操作
2020/08/31 Javascript
[47:02]2018DOTA2亚洲邀请赛3月29日 小组赛B组 VP VS paiN
2018/03/30 DOTA
python中kmeans聚类实现代码
2018/02/23 Python
Python使用min、max函数查找二维数据矩阵中最小、最大值的方法
2018/05/15 Python
python smtplib发送带附件邮件小程序
2018/05/22 Python
解决python xx.py文件点击完之后一闪而过的问题
2019/06/24 Python
使用Python Pandas处理亿级数据的方法
2019/06/24 Python
详解centos7+django+python3+mysql+阿里云部署项目全流程
2019/11/15 Python
python分布式计算dispy的使用详解
2019/12/22 Python
利用keras使用神经网络预测销量操作
2020/07/07 Python
Python Process创建进程的2种方法详解
2021/01/25 Python
英国奢侈品概念店:Base Blu
2019/05/16 全球购物
DBA的职责都有哪些
2012/05/16 面试题
小学老师寄语大全
2014/04/04 职场文书
对祖国的寄语大全
2014/04/11 职场文书
小学优秀班干部事迹材料
2014/05/25 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
现场施工员岗位职责
2015/04/11 职场文书
python基础之停用词过滤详解
2021/04/21 Python