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中日期和时间格式化输出的方法小结
Mar 19 Python
python爬虫入门教程--正则表达式完全指南(五)
May 25 Python
TensorFlow打印tensor值的实现方法
Jul 27 Python
Python设计模式之适配器模式原理与用法详解
Jan 15 Python
python cumsum函数的具体使用
Jul 29 Python
Django如何使用第三方服务发送电子邮件
Aug 14 Python
Python提取PDF内容的方法(文本、图像、线条等)
Sep 25 Python
Django REST框架创建一个简单的Api实例讲解
Nov 05 Python
Python3将jpg转为pdf文件的方法示例
Dec 13 Python
Django 路由层URLconf的实现
Dec 30 Python
python和node.js生成当前时间戳的示例
Sep 29 Python
pytorch损失反向传播后梯度为none的问题
May 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 UTF-8、Unicode和BOM问题
2010/05/18 PHP
Zend Framework页面缓存实例
2014/06/25 PHP
WordPress开发中短代码的实现及相关函数使用技巧
2016/01/05 PHP
PHP创建文件,并向文件中写入数据,覆盖,追加的实现代码
2016/03/25 PHP
php的扩展写法总结
2019/05/14 PHP
JavaScript 原型学习总结
2010/10/29 Javascript
Jquery修改页面标题title其它JS失效的解决方法
2014/10/31 Javascript
JavaScript学习笔记之JS对象
2015/01/22 Javascript
js实现页面a向页面b传参的方法
2016/05/29 Javascript
angular.js指令中transclude选项及ng-transclude指令详解
2017/05/24 Javascript
jQuery实现手势解锁密码特效
2017/08/14 jQuery
node.js实现的装饰者模式示例
2017/09/06 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
vue-cli配置环境变量的方法
2018/07/09 Javascript
Vue父子组件双向绑定传值的实现方法
2018/07/31 Javascript
微信小程序onLaunch异步,首页onLoad先执行?
2018/09/20 Javascript
详解Vue2 添加对scss的支持
2019/01/02 Javascript
python发送伪造的arp请求
2014/01/09 Python
详解Tensorflow数据读取有三种方式(next_batch)
2018/02/01 Python
python生成器,可迭代对象,迭代器区别和联系
2018/02/04 Python
pandas.DataFrame 根据条件新建列并赋值的方法
2018/04/08 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
django_orm查询性能优化方法
2018/08/20 Python
Pyqt5自适应布局实例
2019/12/13 Python
Python用input输入列表的实例代码
2020/02/07 Python
python为QT程序添加图标的方法详解
2020/03/09 Python
Python扫描端口的实现
2021/01/25 Python
CSS3中文字镂空、透明值、阴影效果设置示例小结
2016/03/07 HTML / CSS
生物技术毕业生自荐信
2013/10/23 职场文书
医学护理毕业生自荐信
2013/11/07 职场文书
党员争先创优承诺书
2015/01/20 职场文书
员工升职自荐信
2015/03/27 职场文书
2015年税务稽查工作总结
2015/05/26 职场文书
单位车辆管理制度
2015/08/05 职场文书
如何给HttpServletRequest增加消息头
2021/06/30 Java/Android
idea 在springboot中使用lombok插件的方法
2021/08/02 Java/Android