一个中文冒号引发的“血案”

简介: 一个中文冒号引发的“血案”

背景

美好的七夕刚刚过了一半,突然收到了同事的 询问,我们线上运行的脚步转换工具突然不能用了,紧急求助。


接下来 我们排查一下问题,随即我打开网址 执行一切正常;那么好办了,可能是文件格式的问题,要来源文件,进行debug.


美好的七夕刚刚过了一半,突然收到了同事的 询问,我们线上运行的脚步转换工具突然不能用了,紧急求助。


接下来 我们排查一下问题,随即我打开网址 执行一切正常;那么好办了,可能是文件格式的问题,要来源文件,进行debug.

解决步骤

用同事发来的文件 进行执行 果然报错了,报错如图:

TypeError: The view function for 'convert_file' did not return a valid response. The function either returned None or ended without a return statement.
  1. 先搜索一下这个问题,看看有没有前辈踩过坑

找到一个,好像对咱们解决问题,没有什么帮助

  1. 接下来,我们打断点一步一步定位,最终走到这一步时,灵光一下

这一步是写文件的操作,结合报错返回的信息【None】猜想是不是最后谢文件的时候报错了!!

  1. 接着,我们排查一下原文件,有没有什么特殊的地方

问题找到了,这里有个中文的冒号,我们写文件操作时,文件名称取的是title,然后windows文件名称是不允许中文冒号存在的

备注

windows文件名中不能有下列符号:“?”、“、”、“╲”、“/”、“*”、““”、“”“、“<”、“>”、“|”。
详细命名规则如下:
1、允许文件或者文件夹名称不得超过255个字符;
2、 文件名除了开头之外任何地方都可以使用空格;
3、文件名中不能有下列符号:“?”、“、”、“╲”、“/”、“*”、““”、“”“、“<”、“>”、“|”;
4、 Windows 98文件名不区分大小写,但在显示时可以保留大小写格式;
5、 文件名中可以包含多个间隔符。

解决

  • 保存文件时,去除特殊符号,操作如下:
rstr = r"[\/\\\:\*\?\"\<\>\|]" # '/ \ : * ? " < > |'
tree.write('{}/jmeter-'.format(ST.report_path) + re.sub(rstr, "-", file_name)  + '.jmx', pretty_print=True, xml_declaration=True,
           encoding='utf-8')
  • 问题解决


相关文章
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
用html+javascript打造公文一键排版系统14:为半角和全角字符相互转换功能增加英文字母、阿拉伯数字、标点符号、空格选项
|
存储 编解码 索引
[oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
[oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
141 0
[oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
275 0
中文CTEX加下划线无法换行问题
使用Ctex,ulem宏包中下划线命令\uline如果对中文处理,则中文换行失效,需要换成一下Ctex专用宏包。 \usepackage{CJKulem}
2474 0
正则表达式去除空格、符号,只保留中文、英文、数字
正则表达式去除空格、符号,只保留中文、英文、数字
839 0
|
Android开发
安卓资源字串中加全角空格、半角空格、换行、@%等特殊字符
安卓资源字串中加全角空格、半角空格、换行、@%等特殊字符
291 0
Python语言学习之特殊符号讲解:百分号%/点/双点/反斜杠(转义符)/单斜杠/双斜杠/用法(如去掉中括号)之详细攻略
Python语言学习之特殊符号讲解:百分号%/点/双点/反斜杠(转义符)/单斜杠/双斜杠/用法(如去掉中括号)之详细攻略
|
C#
C# 设置textedit只能输入英文数字下划线,并且只能以英文开头(正则表达式)
this.textEdit1.Properties.Mask.EditMask = @"[a-zA-z][a-zA-Z0-9_]*";
1730 0