诡异错误一: ValueError: embedded null character

使用如下语句读取名为0_xx.txt 文件时,遇到错误 ValueError: embedded null character

if __name__ == '__main__':
    fr = open("F:\eclipse_workspace\machine_learning_example\Ch02\trainningDigits\0_38.txt")
    for i in range(32):
        lineStr = fr.readline()
        lineStr = lineStr.strip()
        print(lineStr)
    pass

1、通过测试,确定错误确实是文件读取语句;

2、是否是文件中包含null字符呢?用ultraedit工具用16进制形式检查数据文件,没有发现有null字符;

3、是否是因为Windows中的编码和python中的编码形式不一样造成的呢?查看到文件编码为GBK格式,但python是可以正确读取GBK文件的,试了其它GBK文件,读取没有任何问题;

4、是不是因为文件名太长?把数据文件放在当前文件夹下,尝试读取确实没有问题。但真的是文件名太长的原因吗?这时候我才发现文件名中有个 ‘\0’ ,才如梦初醒。

注意:一般情况下,Python解释器会将遇到的‘\’识别为路径,会自动增加一个’\’以便和转义字符进行区分,但若遇到转义字符则不增加‘\’。

例如:上述文件名将被转换为 F:\eclipse_workspace\machine_learning_example\Ch02\trainingDigits\0_38.txt。因而出错。

文件路径中若包含‘\0’、’\t’ 等特殊转义字符时要特别注意。

推荐文件路径写法:

F:/eclipse_workspace/machine_learning_example/Ch02/trainningDigits/0_38.txt ,斜杠反过来了,这样就不会出现歧义了。
F:\eclipse_workspace\machine_learning_example\Ch02\trainningDigits\0_38.txt

  • 20
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 8
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值