python处理文件名_[请教]python的中文文件名处理
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
3 楼的可以用 sys.getfilesystemencoding 检测,但由於文件系统的差异,文件名 100% 无损转还是不太可,比如很多 *nix 的文件系统支持除 / 和 \0 外的所有字符,而 win 下不可能
4 楼的可以看 log,当然最好的情况是设 logger,设好以后是一劳永逸的,看 request 和所用的 template 之类的,可以使用 django debug toolbar
1, 5 楼是典型的 encoding 问题
文件名先撇开不说,就说字符编码,只要理清逻辑,那麼类似的 ascii 无法 encode 的错误你就知道怎麼避免
先说编码,ascii 属於 7bit,就算加上最高位,也只能编码 256 个字符,不说 cjk,就光光所有欧洲语系都不够用,於是就出现各种编码方案,特别是 cjk 的,如早期的 gb2312 和 big5
嗯,扯远了,先拉回来
简单的说,目前常见的 cpython2 打包,估计编译时多设了内部使用 ucs2 编码,部分可能用 ucs4,简单的说就是 cpython 内部处理
嗯,这个角度还是太远
这麼说吧,就是当你在外部输入字符串的时候,如果有非 ascii 字符,那麼是一定带有特定的编码方案的,即所谓的 encoding,比如你常用的 linux 下很可能是 utf-8,那麼如果你要转换成其他编码方案,比如 gtk,需要先 decode,然后再 encode
比如:
在 utf-8 下的终端中的 repl
>>> s = '中文' #
>>> u = s.decode('utf-8') #
>>> s_gbk = u.encode('gbk') #
只要理清了这个,那麼上面的文件就知道怎麼处理了,因为通常是概念没理清,不知道什麼时候该用 encode,什麼时候该用 decode 造成的。
然后是文件名的编码问题了,一开头说的可以找出本地文件系统默认编码,但是,各种方案对 unicode 全字符集的支持不一,比如 gb2312 支持的就少,早期 window 用的 cp932(这个数字具体记不清楚) 也少,直接转 utf-8 通常还会出现问题,必须过滤掉非法字符,但这样又可能出现额外的重名,现代的 windows 文件系统名字编码应该没问题了,但是我太久没用过,无法验证。
这几天事情很多,目前只能先草草说一下,太乱了将就一些
python处理文件名_[请教]python的中文文件名处理相关推荐
- python打开中文文件名_[请教]python的中文文件名处理
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 3 楼的可以用 sys.getfilesystemencoding 检测,但由於文件系统的差异,文件名 100% 无损转还是不太可,比如很多 *nix 的 ...
- 大一python编程题_请教python编程问题(作业就剩这几道题了)
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 1. def cleanword(word): (用Python写出程序,使程序可以通过下面的doctest) """ &g ...
- python 时间序列预测_使用Python进行动手时间序列预测
python 时间序列预测 Time series analysis is the endeavor of extracting meaningful summary and statistical ...
- python 概率分布模型_使用python的概率模型进行公司估值
python 概率分布模型 Note from Towards Data Science's editors: While we allow independent authors to publis ...
- python打开中文文件名_解决python打开中文文件名乱码的问题
解决python打开中文文件名乱码的问题 发布时间:2020-07-27 11:20:22 来源:亿速云 阅读:162 作者:清晨 小编给大家分享一下解决python打开中文文件名乱码的问题,相信大部 ...
- Python中cv2.imread()函数不能读中文文件名文件
cv2.imread读取中文文件名 将 image = cv2.imread(image_file) 替换为: image = cv2.imdecode(np.fromfile(image_file, ...
- python global用法_【python测试开发栈】python基础语法大盘点
周边很多同学在用python,但是偶尔会发现有人对python的基础语法还不是特别了解,所以帮大家梳理了python的基础语法(文中的介绍以python3为例).如果你已然是python大牛,可以跳过 ...
- python高斯求和_利用Python进行数据分析(3)- 列表、元组、字典、集合
本文主要是对Python的数据结构进行了一个总结,常见的数据结构包含:列表list.元组tuple.字典dict和集合set. image 索引 左边0开始,右边-1开始 通过index()函数查看索 ...
- 使用python预测基金_使用python先知3 1创建预测
使用python预测基金 This tutorial was created to democratize data science for business users (i.e., minimiz ...
最新文章
- asp.net的get和post请求
- python同时对文件进行读写操作-Python实现的读取文件内容并写入其他文件操作示例...
- 我的第一个用Hibernate框架写的小例子
- python写的程序怎么打包成exe_python--- 如何将自己的程序打包成exe ?
- 0.Overview----Machine Learning
- 疑似华为P30 Pro样张曝光:10倍变焦依然清晰
- 【训练计划】ACM题集以及各种总结大全
- VS2015编译VS2013工程文件出错
- 使用ASP.NET MVC、Rabbit WeixinSDK和Azure快速开发部署微信后台
- 自然语言处理NLP星空智能对话机器人系列:理解语言的 Transformer 模型-子词分词器
- 系统集成项目-管理工程师教程·一
- MATLAB简介与桌面系统
- Kaptcha 使用
- canvas实现旋转缩放的方块
- win10家庭版调出组策略_正版Win10免费送!支持无限次数重装
- Python之marshmallow
- 企业进行固定资产盘点的作用
- POI导入Excel文件(包含.xsl和.xslx文件兼容问题)
- Python从入门到实践第9章课后作业
- 探索Google App Engine背后的奥秘(1)--Google的核心技术(转帖)
热门文章
- 英特尔cpu发布时间表_英特尔10nm芯片开始大规模出货,先进制程时间表浮出水面...
- linux java 共享内存_Linux进程间通信之共享内存
- jre6-java运行环境_Java运行环境(JRE8)64位 1.8.0.25
- 深度学习,路在何方?
- 容器中用uwsgi协议部署注意的问题以及用flask部署
- 【干货】推荐系统中的机器学习算法与评估实战
- 匈牙利算法-指派问题、二分图问题等
- 论文学习15-Table Filling Multi-Task Recurrent Neural Network(联合实体关系抽取模型)
- 委托、Lambda表达式、事件系列07,使用EventHandler委托
- Exalogic硬件架构