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

2021-09-08 10:23:07 浏览数 (1)

背景

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

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

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

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

解决步骤

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

代码语言:javascript复制
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文件名称是不允许中文冒号存在的

备注

代码语言:javascript复制
windows文件名中不能有下列符号:“?”、“、”、“╲”、“/”、“*”、““”、“”“、“<”、“>”、“|”。

详细命名规则如下:

1、允许文件或者文件夹名称不得超过255个字符;

2、 文件名除了开头之外任何地方都可以使用空格;

3、文件名中不能有下列符号:“?”、“、”、“╲”、“/”、“*”、““”、“”“、“<”、“>”、“|”;

4、 Windows 98文件名不区分大小写,但在显示时可以保留大小写格式;

5、 文件名中可以包含多个间隔符。

解决

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

  • 问题解决

0 人点赞