当前位置: 首页 > news >正文

迎中国建设银行网站建设银行官方投诉网站

迎中国建设银行网站,建设银行官方投诉网站,精美免费ppt模板下载,在线建站软件文章目录 前言1. 起因2. 调查3. 高能4. 释惑 前言 今天分享一件很诡异的事情#xff0c;我写代码的时候遇到了不可见的字符#xff01;#xff01;#xff01; 1. 起因 今天在使用pipreqs导出项目中所依赖的库时突然报错了#xff1a; pipreqs . --encodingutf-8 --forc… 文章目录 前言1. 起因2. 调查3. 高能4. 释惑 前言 今天分享一件很诡异的事情我写代码的时候遇到了不可见的字符 1. 起因 今天在使用pipreqs导出项目中所依赖的库时突然报错了 pipreqs . --encodingutf-8 --force# 以下是报错信息 ERROR: Failed on file: ./build.py Traceback (most recent call last):File /usr/local/bin/pipreqs, line 8, in modulesys.exit(main())File /usr/local/lib/python3.8/dist-packages/pipreqs/pipreqs.py, line 528, in maininit(args)File /usr/local/lib/python3.8/dist-packages/pipreqs/pipreqs.py, line 455, in initcandidates get_all_imports(input_path,File /usr/local/lib/python3.8/dist-packages/pipreqs/pipreqs.py, line 131, in get_all_importsraise excFile /usr/local/lib/python3.8/dist-packages/pipreqs/pipreqs.py, line 117, in get_all_importstree ast.parse(contents)File /usr/lib/python3.8/ast.py, line 47, in parsereturn compile(source, filename, mode, flags,File unknown, line 1# -*- coding:utf-8 -*-^ SyntaxError: invalid character in identifier直接来了SyntaxError#竟然是个无效字符字符#表示十分的无辜当事人表示十分的震惊这不是离天下之大谱滑天下之大稽吗这就一行代码注释能够错到哪里去 2. 调查 头一次遇到这种邪门的事情我就查看了一下pipreqs 源码代码很简单我就摘取了报错的部分 # pipreqs/pipreqs.py line 112 for file_name in files:file_name os.path.join(root, file_name)with open(file_name, r, encodingencoding) as f:contents f.read()try:tree ast.parse(contents) # 在这里报错了for node in ast.walk(tree):if isinstance(node, ast.Import):for subnode in node.names:raw_imports.add(subnode.name)elif isinstance(node, ast.ImportFrom):raw_imports.add(node.module)except Exception as exc:...意思也很好理解pipreqs读取当前工程下的所有python文件然后使用ast库进行语法分析获取python文件所依赖的库名。既然这部分报错了我就直接拿了出来此时我高度怀疑ast存在重大bug 3. 高能 为了确认ast在解析文件时存在bug我对当前工程下的所有python文件进行一一测试然而事情的发展却超出了我的预料第二个文件(process_data.py)竟然能够可以解析   我看了下这个文件开头也是一样的注释然而却没有报错。难道是编码有问题我打开了Pycharm看了一下也没有问题 这也太诡异了吧然后我又debug了一下看下文件的内容确定也没有问题 想不通了于是问了下ChatGPT 给出了四个怀疑点基本都是一一排除了python 3.8、文件为utf-8编码无语法错误注释也没有什么问题。但有一个点却无法理解不可见的特殊字符   不可见既然是个字符即使不可见也得有位置吧。于是乎最诡异的事情来了 还真的有一个空字符在第一个位置这。。。空字符还能占个位置   打印了一下ASCII发现其值竟然是65279空字符竟然有ASCII值顿时觉得这个问题不简单难道还真的不可见 4. 释惑 百度了一下发现ASCII值为65279是因为文件采用UTF-8 BOM编码导致的这是Windows环境下创建文件时默认的编码方式对此还专门看了一下还真是 这在Pycharm中也有这项设置默认情况下在Pycharm中创建新文件时会采用UTF-8 with NO BOM编码也就是常说的UTF-8而之所以ast库有的能够正常解析文件有的却不可以是可能有的文件不是在Pycharm中创建的导致了这种诡异的时间发生了。同时我用二进制的方式读了一下文件发现前三个字节是\xEF\xBB\xBF这也正是UTF-8 BOM编码时自动添加的。 py_file ./build.py with open(py_file, r, encodingutf-8) as f:contents f.read()if ord(contents[0]) 65279:print(UTF-8 BOM)with open(py_file, rb) as f:contents f.read(3)if contents b\xEF\xBB\xBF:print(UTF-8 BOM)# UTF-8 BOM # UTF-8 BOM于是将文件编码由UTF-8 BOM改为UTF-8问题就解决了
http://www.hkea.cn/news/14493276/

相关文章:

  • 金泉网做网站多少钱qq推广文案怎么写
  • 上海网站开发外包公司深圳各区房价一览表
  • 栾川网站开发怎么做好企业网
  • 萧山做网站哪里找做那个免费观看视频网站
  • 做响应式网站价格石油网页设计与网站建设
  • 一般在什么网站上做电子请帖app推广软件
  • 对亚马逊网站做简要分析与评价如何关闭网站
  • 团购网站短信平台wordpress ftp
  • 电影模板哪个网站好影视公司需要的许可证
  • 国外优秀app设计网站樟木头镇做网站
  • 什么网站可以做长图攻略莱芜网络推广公司哪里有
  • 路由器设置用来做网站空间吗微信公众号采集插件wordpress
  • 吉林建设厅网站首页网站如何能吸引用户
  • 企业网站源码交易购物网站建设规划书范文
  • 网站字体大小是多少建设一个网站需要什么安全设备
  • 先买域名不建设网站吗西安网站制作机构
  • 旅行社网站规划与建设的流程图微信制作微网站开发
  • 奉贤网站建设专家wordpress大学模板2.7
  • 用qq邮箱做网站在线flash相册网站源码
  • 网站定位模板制作wordpress模板教程
  • 汇鑫网站建设便捷wap 手机网站建设
  • 简要描述网站开发过程成都网站建设网站建设
  • 省通信管理局 网站备案制度流程东莞最新消息 今天
  • 网站设计的思路最差网站设计
  • 数字货币网站开发需求网站内容页设计
  • 从什么网站找做游戏的代码做网页需要学什么语言
  • 如何给英文网站做外链网站地图对seo的影响
  • 平面设计和室内设计的区别外贸网站如何优化
  • 行业网站运营浙江平湖建设局网站
  • 使用asp.net制作网站的整体过程网站建设下什么费用