为了账号安全,请及时绑定邮箱和手机立即绑定

d:\photo\a\ 下面有中文的目录,和中文文件名的txt文件,报错。

d:\photo\a\ 下面有中文的目录,和中文文件名的txt文件,报错。

慕桂英546537 2022-12-18 16:12:29
import osimport globdir=r"d:\\photo"os.chdir(dir)def txt(m):b=os.path.abspath(m)#a=b.decode('cp936').encode('gbk')os.chdir(b)list=glob.glob(u"*.txt")for i in list:return os.path.abspath(i)for i in os.listdir(dir):  print txt(i)报错:d:\photo\a\1.txtTraceback (most recent call last):File "F:\pydev\d.py", line 17, in <module>print txt(i)File "F:\pydev\d.py", line 11, in txtos.chdir(b)WindowsError: [Error 2] : 'd:\\photo\\a\\\xd0\xc2\xbd\xa8\xce\xc4\xbc\xfe\xbc\xd0'
查看完整描述

2 回答

?
呼啦一阵风

TA贡献1802条经验 获得超6个赞

文件名或目录含中文时,需要encode('utf-8')
另外,脚本前面加上
# -*- coding:utf-8 -*-

查看完整回答
反对 回复 2022-12-21
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

经过我的本地测试,是没有问题的。

不过你的程序有两个地方是有问题的。

1】在得到list列表后,你使用的是return os.path.abspath(i)。这会让你只能得到你输出列表的第一个路径值。比如你输出列表为:

这样你只能得到:

2】你的程序不具有遍历photo下二级子目录并输出的能力。比如Photo文件夹下有个新建文件夹,新建文件夹下有一个新建文件夹,那么你只能输出第一个新建文件夹下的所有文件。(前提是将return改成print)。

如下:

相信看我的输出你就知道程序是没有问题的,是可以输出中文目录的,你可以尝试卸载重新安装下python试试。另外我的python版本是2.7。



 


查看完整回答
反对 回复 2022-12-21
  • 2 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号