Pyinstaller踩坑

我感觉Pyinstaller的健壮性非常不好,总之我个人使用经常报出各种错误。

这次我遇到的错误是:
我在命令行中输入命令:

pyinstaller -F test.py

其中,test.py里面有中文字符,然后果不其然地报出了编码错误:

File "c:\python37\lib\codecs.py", line 322, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc7 in position 201: invalid continuation byte

UnicodeDecodeError
对此,我查了很多博客和StackOverflow,得到的解决方案对我都没用。后来仔细想了想,感觉可能是文档本身编码的问题,遂解决:

  1. 右键→打开方式→记事本
    在这里插入图片描述
  2. 点击左上角,文件→另存为
    在这里插入图片描述
  3. 在下方以UTF-8的编码保存即可。问题解决。在这里插入图片描述
  • 2
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
这个错误通常表示在尝试使用 'utf-8' 编码对文件进行解码时出现了问题,可能是因为文件中包含了无效的字节序列。 为了解决这个问题,你可以尝试使用其他编码格式来打开文件。在这种情况下,你可以尝试使用 'latin-1' 编码,它是一种广泛支持的编码格式。以下是修改后的代码示例: ```python import re import pandas as pd # 定义正则表达式模式 ip_pattern = r'ip:(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})' sender_email_pattern = r'SenderEmail:(.+?),' rcpt_pattern = r'Rcpt:(.+?),' subject_pattern = r'subject:(.+?),' # 创建空的 DataFrame data = { 'IP': [], 'SenderEmail': [], 'Rcpt': [], 'Subject': [], '是否包含中文': [] } df = pd.DataFrame(data) # 读取日志文件并提取信息 with open('data.txt', 'r', encoding='latin-1') as logfile: for line in logfile: ip_match = re.search(ip_pattern, line) sender_email_match = re.search(sender_email_pattern, line) rcpt_match = re.search(rcpt_pattern, line) subject_match = re.search(subject_pattern, line) if ip_match and sender_email_match and rcpt_match and subject_match: ip = ip_match.group(1) sender_email = sender_email_match.group(1) rcpt = rcpt_match.group(1) subject = subject_match.group(1) # 判断邮件主题是否包含中文字符 if any('\u4e00' <= char <= '\u9fff' for char in subject): chinese_flag = '有中文' else: chinese_flag = '无中文' # 将数据添加到 DataFrame df = df.append({ 'IP': ip, 'SenderEmail': sender_email, 'Rcpt': rcpt, 'Subject': subject, '是否包含中文': chinese_flag }, ignore_index=True) # 保存 DataFrame 到 Excel 文件 df.to_excel('output.xlsx', index=False) ``` 在这个示例中,我们将文件的编码格式从 'utf-8' 改为 'latin-1'(`encoding='latin-1'`),并使用这个编码格式打开文件。这样可以避免 Unicode 解码错误。 请注意,如果你的文件实际上不是使用 'latin-1' 编码的,请根据实际情况修改编码格式。 希望这次能够成功运行。如有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值