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编程语言的35个与众不同之处(语言特征和使用技巧)
Jul 07 Python
Python实现简单HTML表格解析的方法
Jun 15 Python
Python聚类算法之凝聚层次聚类实例分析
Nov 20 Python
Python中列表与元组的乘法操作示例
Feb 10 Python
python 自动重连wifi windows的方法
Dec 18 Python
python实时获取外部程序输出结果的方法
Jan 12 Python
python sqlite的Row对象操作示例
Sep 11 Python
Pytorch 之修改Tensor部分值方式
Dec 27 Python
浅析Python 条件控制语句
Jul 15 Python
matplotlib自定义鼠标光标坐标格式的实现
Jan 08 Python
python 解决微分方程的操作(数值解法)
May 26 Python
Python还能这么玩之用Python修改了班花的开机密码
Jun 04 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+MySQL5.0中文乱码解决方法
2006/11/20 PHP
MySQL授权问题总结
2007/05/06 PHP
PHP 函数语法介绍一
2009/06/14 PHP
基于php 随机数的深入理解
2013/06/05 PHP
codeigniter框架批量插入数据
2014/01/09 PHP
php实现文件下载实例分享
2014/06/02 PHP
ThinkPHP的cookie和session冲突造成Cookie不能使用的解决方法
2014/07/01 PHP
PHP将回调函数作用到给定数组单元的方法
2014/08/19 PHP
php curl请求信息和返回信息设置代码实例
2015/04/27 PHP
php文件上传的两种实现方法
2016/04/04 PHP
laravel 5.3中自定义加密服务的方案详解
2017/05/09 PHP
jquery实现鼠标滑过后动态图片提示效果实例
2015/08/10 Javascript
基于javascript实现表格的简单操作
2016/05/21 Javascript
javascript运算符——逻辑运算符全面解析
2016/06/27 Javascript
Jquery组件easyUi实现选项卡切换示例
2016/08/23 Javascript
Extjs让combobox写起来简洁又漂亮
2017/01/05 Javascript
纯JS单页面赛车游戏制作代码分享
2017/03/03 Javascript
javascript九宫格图片随机打乱位置的实现方法
2017/03/15 Javascript
jQuery插件FusionCharts实现的Marimekko图效果示例【附demo源码】
2017/03/24 jQuery
layDate插件设置开始和结束时间
2018/11/15 Javascript
解决vue语法会有延迟加载显现{{xxx}}的问题
2019/11/14 Javascript
谈一谈vue请求数据放在created好还是mounted里好
2020/07/27 Javascript
vue项目打包后提交到git上为什么没有dist这个文件的解决方法
2020/09/16 Javascript
Python Logging 日志记录入门学习
2018/06/02 Python
零基础使用Python读写处理Excel表格的方法
2019/05/02 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
python应用Axes3D绘图(批量梯度下降算法)
2020/03/25 Python
解决python 执行sql语句时所传参数含有单引号的问题
2020/06/06 Python
什么样的创业计划书可行性高?
2014/02/01 职场文书
银行职员自我鉴定
2014/04/20 职场文书
幼儿教师演讲稿
2014/05/06 职场文书
企业公益活动策划方案
2014/08/24 职场文书
九年级英语教学反思
2016/02/15 职场文书
《鲁班学艺》读后感3篇
2019/11/27 职场文书
nginx实现动静分离的方法示例
2021/11/07 Servers
Vite + React从零开始搭建一个开源组件库
2022/06/25 Javascript