完美解决Python2操作中文名文件乱码的问题
作者:jingxian 发布时间:2022-12-12 11:29:46
标签:python,文件名,乱码,中文
Python2默认是不支持中文的,一般我们在程序的开头加上#-*-coding:utf-8-*-来解决这个问题,但是在我用open()方法打开文件时,中文名字却显示成了乱码。
我先给大家说说Python中的编码问题,Python中的字符串的大概分为为str和Unicode两种形式,其中str常用的编码类型为utf-8,gb2312,gbk等等,Python使用Unicode作为编码的基础类型。str记录的是字节数组,只是某种编码的存储格式,终于输出到文件或是打印出来是什么格式,完全取决于其解码的编码将他解码成什么样子;Unicode是一种类似于符号集的抽象编码,它只规定了符号的二进制代码,却没有规定这个二进制代码该如何存储,也就是它只是一种内部表示,不能直接保存,所以存储时需要规定一种存储形式,比如utf-8等。
Python中有编码转换的函数有:
decode(char_set) 实现char_set解码成Unicodeencode(char_set) 实现Unicode编码成char_set
查看Python文档会发现:
open(filename, 'w')这个方法中,filename这个参数必须是Unicode编码的参数。
我之前加上#-*-coding:utf-8-*-将编码设置为utf-8,当调用这个方法往里传参数时,需要将这个变量filename解码成Unicode。
比如filename='中文.txt',使用open()时,这样写open(filename.decode('utf-8'), 'w'),这样创建的中文文件名就没有乱码问题了。


猜你喜欢
- 本文实例讲述了PHP设计模式:装饰器模式Decorator。分享给大家供大家参考,具体如下:1. 概述  
- 昨天按照手册教程,动手写一个Auth扩展,按照包独立性的原则,我不希望将Auth::extend()这种方法写在 start.php 中,毫
- django提供文件下载时,若果文件较小,解决办法是先将要传送的内容全生成在内存中,然后再一次性传入Response对象中:def simp
- python提取特定时间段内的数据尝试一下:data['Date'] = pd.to_datetime(data['
- 总结为:改注册表。顺手写个脚本:import tkinter as tkfrom tkinter import ttkimport winr
- 本文web服务器使用的为apache。1. 安装apacheyum install -y httpd2. 配置apache修改apache配
- 本文介绍了Python3安装Scrapy的方法步骤,分享给大家,具体如下:运行平台:WindowsPython版本:Python3.xIDE
- 备份多个数据库可以使用如下命令:mysqldump -uroot -p123456 --databases test1 test2 test
- 1. orm读写数据1. 创建1.1. 创建记录user := User{Name: "Jinzhu", Age: 18
- 本文实例讲述了PHP开发之归档格式phar文件概念与用法。分享给大家供大家参考,具体如下:一个php应用程序往往是由多个文件构成的,如果能把
- 前言cookie:在网站中,http请求是无状态的。也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪
- 前言当前二维码的应用越来越广泛,包括疫情时期的健康码也是应用二维码的典型案例,最近需要通过一张二维码显示较多文本数据,也就是对二维码数据进行
- 程序开始一、基本使用1、创建一个游戏窗口出来代码如下:# coding:utf8import pygameimport sys# 初始化py
- index_selectanchor_w = self.FloatTensor(self.scaled_anchors).index_sel
- 前言最近遇到一个mysql在RR级别下的死锁问题,感觉有点意思,研究了一下,做个记录。涉及知识点:共享锁、排他锁、意向锁、间隙锁、插入意向锁
- 要解决两个需求: 一个是从A页面跳到B页面,滚动到页面的任何地方; 第二个是在B页面内部点击某个元素,滚动到页面的任何地方; 怎么解决啊?很
- python爬取数据保存为Json格式代码如下:#encoding:'utf-8'import urllib.request
- 众所周知,Python 支持多种编程范式:过程式(使用基础的语句)、面向对象编程和函数式编程。Python 也提供了其他函数式编程语言的工具
- 目标函数编码方式本程序采用的是二进制编码精确到小数点后五位,经过计算可知对于 其编码长度为18,对于 其编码长度为15,因此每个基于的长
- 本文包括两部分,一部分是源码解读,另一部分是对zap的增强。由于zap是一个log库,所以从两方面来深入阅读zap的源码,一个是初始化log