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

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

背景

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


接下来 我们排查一下问题,随即我打开网址 执行一切正常;那么好办了,可能是文件格式的问题,要来源文件,进行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')
  • 问题解决


相关文章
|
12月前
|
搜索推荐
特殊符号
特殊符号
60 0
|
存储 编解码 索引
[oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
[oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
134 0
[oeasy]python0131_[趣味拓展]各种符号_汉语拼音符号_中文全角英文字母_中文全角标点
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
写几个正则表达式:只允许输入汉字、数字、字母、中英文小括号,并且10个字符以内|只允许输入汉字、数字、字母、英文小括号|电话号码正则表达式
268 0
正则表达式去除空格、符号,只保留中文、英文、数字
正则表达式去除空格、符号,只保留中文、英文、数字
803 0
中文CTEX加下划线无法换行问题
使用Ctex,ulem宏包中下划线命令\uline如果对中文处理,则中文换行失效,需要换成一下Ctex专用宏包。 \usepackage{CJKulem}
2458 0
|
Android开发
安卓资源字串中加全角空格、半角空格、换行、@%等特殊字符
安卓资源字串中加全角空格、半角空格、换行、@%等特殊字符
286 0
Python语言学习之特殊符号讲解:百分号%/点/双点/反斜杠(转义符)/单斜杠/双斜杠/用法(如去掉中括号)之详细攻略
Python语言学习之特殊符号讲解:百分号%/点/双点/反斜杠(转义符)/单斜杠/双斜杠/用法(如去掉中括号)之详细攻略
|
C#
C# 设置textedit只能输入英文数字下划线,并且只能以英文开头(正则表达式)
this.textEdit1.Properties.Mask.EditMask = @"[a-zA-z][a-zA-Z0-9_]*";
1720 0
|
Java
用正则表达式处理含中文字符串的问题
已经是第二次遇到同样的问题了,要匹配的字符串里含有中文,例如“<你好><Edward>”,我希望取出Edward的名字,所以正则表达式为“<[^>]*><([^>]*)>”,匹配后只要取group(1)即可。
1167 0