电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁技術文章
文章詳情頁

Python如何解決secure_filename對中文不支持問題

瀏覽:131日期:2022-06-15 08:21:20
目錄一、最近使用secure_filename發現的問題二、后面找到了原因三、解決方案四、效果展示

前言:最近使用到了secure_filename,然后悲劇的發現中文居然不展示出來,于是我慢慢的debug,終于找到問題了。

一、最近使用secure_filename發現的問題

文件名是中文版的,悲劇的是中文以及其他特殊字符會被省略。

Python如何解決secure_filename對中文不支持問題

二、后面找到了原因

原來secure_filename()函數只返回ASCII字符,非ASCII字符會被過濾掉。

三、解決方案

找到secure_filename(filename)函數,修改它的源代碼。

secure_filename(filename)函數源代碼:def secure_filename(filename: str) -> str: r'''Pass it a filename and it will return a secure version of it. This filename can then safely be stored on a regular file system and passed to :func:`os.path.join`. The filename returned is an ASCII only string for maximum portability. On windows systems the function also makes sure that the file is not named after one of the special device files. >>> secure_filename('My cool movie.mov') ’My_cool_movie.mov’ >>> secure_filename('../../../etc/passwd') ’etc_passwd’ >>> secure_filename(’i contain cool xfcmlxe4uts.txt’) ’i_contain_cool_umlauts.txt’ The function might return an empty filename. It’s your responsibility to ensure that the filename is unique and that you abort or generate a random filename if the function returned an empty one. .. versionadded:: 0.5 :param filename: the filename to secure ''' filename = unicodedata.normalize('NFKD', filename) filename = filename.encode('ascii', 'ignore').decode('ascii') for sep in os.path.sep, os.path.altsep:if sep: filename = filename.replace(sep, ' ') filename = str(_filename_ascii_strip_re.sub('', '_'.join(filename.split()))).strip('._' ) # on nt a couple of special files are present in each folder. We # have to ensure that the target file is not such a filename. In # this case we prepend an underline if (os.name == 'nt'and filenameand filename.split('.')[0].upper() in _windows_device_files ):filename = f'_{filename}' return filename

secure_filename(filename)函數修改后的代碼:

def secure_filename(filename: str) -> str: r'''Pass it a filename and it will return a secure version of it. This filename can then safely be stored on a regular file system and passed to :func:`os.path.join`. The filename returned is an ASCII only string for maximum portability. On windows systems the function also makes sure that the file is not named after one of the special device files. >>> secure_filename('My cool movie.mov') ’My_cool_movie.mov’ >>> secure_filename('../../../etc/passwd') ’etc_passwd’ >>> secure_filename(’i contain cool xfcmlxe4uts.txt’) ’i_contain_cool_umlauts.txt’ The function might return an empty filename. It’s your responsibility to ensure that the filename is unique and that you abort or generate a random filename if the function returned an empty one. .. versionadded:: 0.5 :param filename: the filename to secure ''' filename = unicodedata.normalize('NFKD', filename) filename = filename.encode('utf8', 'ignore').decode('utf8') # 編碼格式改變 for sep in os.path.sep, os.path.altsep:if sep: filename = filename.replace(sep, ' ') _filename_ascii_add_strip_re = re.compile(r’[^A-Za-z0-9_u4E00-u9FBFu3040-u30FFu31F0-u31FF.-]’) filename = str(_filename_ascii_add_strip_re.sub(’’, ’_’.join(filename.split()))).strip(’._’) # 添加新規則 # on nt a couple of special files are present in each folder. We # have to ensure that the target file is not such a filename. In # this case we prepend an underline if (os.name == 'nt'and filenameand filename.split('.')[0].upper() in _windows_device_files ):filename = f'_{filename}' return filename四、效果展示

我們很清楚的看到了效果,目前是支持中文的

Python如何解決secure_filename對中文不支持問題

到此這篇關于Python如何解決secure_filename對中文不支持問題的文章就介紹到這了,更多相關Python secure_filename不支持中文內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 播音主持培训-中影人教育播音主持学苑「官网」-中国艺考界的贵族学校 | 南方珠江-南方一线电缆-南方珠江科技电缆-南方珠江科技有限公司 南汇8424西瓜_南汇玉菇甜瓜-南汇水蜜桃价格 | 河南卓美创业科技有限公司-河南卓美防雷公司-防雷接地-防雷工程-重庆避雷针-避雷器-防雷检测-避雷带-避雷针-避雷塔、机房防雷、古建筑防雷等-山西防雷公司 | 贵阳用友软件,贵州财务软件,贵阳ERP软件_贵州优智信息技术有限公司 | 液压压力机,液压折弯机,液压剪板机,模锻液压机-鲁南新力机床有限公司 | 京马网,京马建站,网站定制,营销型网站建设,东莞建站,东莞网站建设-首页-京马网 | 焊接减速机箱体,减速机箱体加工-淄博博山泽坤机械厂 | 温州食堂承包 - 温州市尚膳餐饮管理有限公司 | 上海皓越真空设备有限公司官网-真空炉-真空热压烧结炉-sps放电等离子烧结炉 | 砖机托板价格|免烧砖托板|空心砖托板厂家_山东宏升砖机托板厂 | 托利多电子平台秤-高精度接线盒-托利多高精度电子秤|百科 | 压砖机、液压制砖机、静压砖机、环保砖机生产厂家—杜甫机械 | 东莞螺丝|东莞螺丝厂|东莞不锈钢螺丝|东莞组合螺丝|东莞精密螺丝厂家-东莞利浩五金专业紧固件厂家 | 可程式恒温恒湿试验箱|恒温恒湿箱|恒温恒湿试验箱|恒温恒湿老化试验箱|高低温试验箱价格报价-广东德瑞检测设备有限公司 | 气密性检测仪_气密性检测设备_防水测试仪_密封测试仪-岳信仪器 | 郑州巴特熔体泵有限公司专业的熔体泵,熔体齿轮泵与换网器生产厂家 | 制丸机,小型中药制丸机,全自动制丸机价格-甘肃恒跃制药设备有限公司 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 齿式联轴器-弹性联轴器-联轴器厂家-江苏诺兴传动联轴器制造有限公司 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 溶氧传感器-pH传感器|哈美顿(hamilton)| 阿米巴企业经营-阿米巴咨询管理-阿米巴企业培训-广东键锋企业管理咨询有限公司 | PSI渗透压仪,TPS酸度计,美国CHAI PCR仪,渗透压仪厂家_价格,微生物快速检测仪-华泰和合(北京)商贸有限公司 | 复合土工膜厂家|hdpe防渗土工膜|复合防渗土工布|玻璃纤维|双向塑料土工格栅-安徽路建新材料有限公司 | 塑料瓶罐_食品塑料瓶_保健品塑料瓶_调味品塑料瓶–东莞市富慷塑料制品有限公司 | 在线PH计-氧化锆分析仪-在线浊度仪-在线溶氧仪- 无锡朝达 | 寮步纸箱厂_东莞纸箱厂 _东莞纸箱加工厂-东莞市寮步恒辉纸制品厂 | 防堵吹扫装置-防堵风压测量装置-电动操作显示器-兴洲仪器 | 暖气片十大品牌厂家_铜铝复合暖气片厂家_暖气片什么牌子好_欣鑫达散热器 | 管理会计网-PCMA初级管理会计,中级管理会计考试网站 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 冷轧机|两肋冷轧机|扁钢冷轧机|倒立式拉丝机|钢筋拔丝机|收线机-巩义市华瑞重工机械制造有限公司 | 顶呱呱交易平台-行业领先的公司资产交易服务平台 | 广州印刷厂_广州彩印厂-广州艺彩印务有限公司 | 管家婆-管家婆软件-管家婆辉煌-管家婆进销存-管家婆工贸ERP | 防水试验机_防水测试设备_防水试验装置_淋雨试验箱-广州岳信试验设备有限公司 | 驾驶式洗地机/扫地机_全自动洗地机_工业洗地机_荣事达工厂官网 | 万濠影像仪(万濠投影仪)百科-苏州林泽仪器 | 工业铝型材-铝合金电机壳-铝排-气动执行器-山东永恒能源集团有限公司 | 钛板_钛管_钛棒_钛盘管-无锡市盛钛科技有限公司| 上海刑事律师|刑事辩护律师|专业刑事犯罪辩护律师免费咨询-[尤辰荣]金牌上海刑事律师团队 |