背景
美好的七夕刚刚过了一半,突然收到了同事的 询问,我们线上运行的脚步转换工具突然不能用了,紧急求助。
接下来 我们排查一下问题,随即我打开网址 执行一切正常;那么好办了,可能是文件格式的问题,要来源文件,进行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.
- 先搜索一下这个问题,看看有没有前辈踩过坑
找到一个,好像对咱们解决问题,没有什么帮助
- 接下来,我们打断点一步一步定位,最终走到这一步时,灵光一下
这一步是写文件的操作,结合报错返回的信息【None】猜想是不是最后谢文件的时候报错了!!
- 接着,我们排查一下原文件,有没有什么特殊的地方
问题找到了,这里有个中文的冒号,我们写文件操作时,文件名称取的是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')
- 问题解决