[Python] 中文路径和中文文本文件乱码问题

情景:

Python首先读取名为log.txt的文本文件, 其中包含有文件名相对路径信息filename.

随后Python调用shutil.copy2(src, dst)对该filename文件进行复制操作.

由于filename为相对路径信息, 所以我们需要硬编码写入父目录, 假设为"C:\\源目录\\", 同时还有目标目录信息, 假设为"C:\\目标目录\\".

代码:

import shutil

def get_file_list(src):
    f = open(src, ‘r‘)
    data = []
    for line in f.readlines():
        if len(line) > 2:
            line = line.replace(‘\n‘,‘‘)
            line = line.replace(‘\r‘,‘‘)
            data.append(line.decode(‘utf8‘))
    return data

def copy_file_to(ls, src, dst):
    for f in ls:
        shutil.copy(src + f, dst + f)

if __name__ == ‘__main__‘:
    ls = get_file_list(u"log.txt")
    copy_file_to(ls, u"C:\\源目录\\", u"C:\\目标目录\\")

问题:

会出现各种编码出错, 乱码.

分析:

情境中, 有两个编码:

1. log.txt的编码

2. python脚本文件的编码.

如果这两个编码不匹配, 就会出现问题.

解决方案:

使用Notepad++将两个文件的编码都改为utf-8 No BOM即可.

时间: 2024-10-14 04:06:31

[Python] 中文路径和中文文本文件乱码问题的相关文章

phpexcel对于中文路径和中文名称的问题(有疑问)

phpexcel对于中文的文件名无法读取(我本地环境都是utf-8的编码) 是不是win系统识别都是gbk ?(需要把utf-8的字符串改为gbk) $file = "C:\\Users\\Administrator\\Desktop\\中文.xls"; $file = iconv('utf-8', 'gb2312', $file); $objPHPExcel = \PHPExcel_IOFactory::load($file); $sheetData = $objPHPExcel-&

Python入门--番外--中文目录乱码问题

写Python的程序,读取含有中文目录下的文件,结果发现根本读取不了该中文目录下的文件, 原因:通过调试发现:该文件的目录乱码,目录无法解析,自然导致无法读取文件内容 解决方法: strPath = "E:\superBoard\pro_input\1.8有理数的减法\1.8有理数的减法.htm" #这里的strpath是你的中文路径名 strPath = unicode(strPath , "GB2312") 此时得到的中文路径就不会乱码了

C++支持中文路径

默认情况下C++编码时,存在中文路径下文件打开成功,解析数据失败的情况.这便是中文路径导致的,具体解决方式如下: 一.开始 用C++的fstream打开中文路径或者中文文件名的文件时,可能会有乱码或者打不开的问题. 1: ifstream is(strFileName); 2: if (!is.is_open()) 3: { 4: return 0; 5: } 这里返回的是0,一般的原因都是路径的问题. 二.方法 1: //设置为系统缺省,并将原来的locale返回保存在loc中 2: std:

gdal中文路径无法打开问题

在C#中使用OGR读写矢量数据时,需要引用“using OSGeo.OGR;”. 同时为了处理中文路径和中文字段,需要在开始设置下面两个属性,代码如下: //为了支持中文路径,请添加下面这句代码(大多数情况下不需要这句) //OSGeo.GDAL.Gdal.SetConfigOption("GDAL_FILENAME_IS_UTF8","NO"); //为了使属性表字段支持中文,请添加下面这句 OSGeo.GDAL.Gdal.SetConfigOption(&quo

Python中中文路径处理问题的研究

a = '你' 为 str 对象 a = u'你' 为 unicode 对象 1. >>> print 'u'  + '你' >>> u浣 输出乱码 2. >>> print 'u'  + u'你' >>> u你 正常 3. >>> print 'u你' >>> u浣 输出乱码 4. >>> print 'u你' + 'u' >>> u浣爑 输出乱码 5. >

转 python 读取中文文件名/中文路径

python直接读取中文路径的文件时失败,可做如下处理: inpath = 'D:/work/yuanxx/在线导航/驾车导航/walk_log/20130619_172355.txt' uipath = unicode(ipath , "utf8") 然后用"uipath"经过编码后的路径去open()即可: fin = open(uipath)

[转]Python的经典问题——中文乱码

关键字:Python UTF-8 GBK 中文 乱码估计入门时都会遇到的.我是在windows下用的Python25自带的IDLE编辑运行的,发现运行脚本得出的结果有一些中文显示是乱码,但有一些是正常的.百思不得其解.首先查看了一下源文件的编码格式,是UTF-8.经过搜索再搜索,调试再调试,也换了几个编译器,发现比IDLE还糟糕(可能需要进行encode设置).问题终于解决了,一共花了俺将近5个小时,写在这里,希望遇到问题的人能搜索到这里,不再重犯.乱码原因:因为你的文件声明为utf-8,并且也

<video/><img/>路径带中文,显示乱码(URIEncoding)

问题来源: 做html5的video的时候,在设置播放文件的文件名为中文的时候,出现GET请求的文件名为乱码(实际上,也不是乱码,是对应的"utf-8"字符串的byte数组的16进制表示的字符串.∵我设置的jsp/html编码都是"utf-8") 尝试了一般的处理手段(如 “request.setCharacterEncoding("utf-8");”,“str = new String(str.getBytes("ISO-8859-1

python中由于中文路径引起的os.path.isfile(imgpath) == False问题

昨天在用python脚本处理文件的时候,遇到了题述问题,明明文件时存在的,但是在用os.path.isfile(imgpath) == False进行判断的时候总是成立,在一开始以为是正反斜杠windows与linux不同导致的,后来发现时因为中文路径造成的. 在网上查阅了解决办法如下: imgpath = unicode(imgpath, "utf8") 利用上述语句将imgpath的编码进行转换,然后再进行判断以及后续的图片读取(使用cv2模块)就都没有问题了.