赤色彗星SE 发表于 2010-5-2 18:04

麻烦帮看下我的python代码有啥问题...很短的

本帖最后由 赤色彗星SEXY 于 2010-5-2 19:33 编辑

import binascii
f = open('/root/1.cfg','rb')
cfgFile = f.read()
f.close()
newFile = cfgFile
for i in range(1,len(cfgFile)):
    if cfgFile=="\xff":
      newFile = newFile + cfgFile
      print '%d are xff' %i
    else:
      print '%d not xff' %i
      asciiNum=int(binascii.b2a_hex(cfgFile),16)
      if(asciiNum%2==1):
            asciiNum=(asciiNum+127)/2
            newFile = newFile + binascii.a2b_hex(2*''+hex(asciiNum))
      else:
            asciiNum=asciiNum/2
            newFile = newFile + binascii.a2b_hex(2*''+hex(asciiNum))

len(cfgFile)长度是21000多,但是循环子走到12100这样就结束了,请问下原因是?google不知道怎么找关键词。
cfg文件是522-c的配置文件....

12718 not xff
Traceback (most recent call last):
File "<stdin>", line 12, in <module>
TypeError: Odd-length string

走到12718就报错....搜不出什么结果,把newFile = newFile + binascii.a2b_hex(2*''+hex(asciiNum))拿了就可以走完.....但是这个是在哪里影响循环了?

糊状物 发表于 2010-5-2 18:45

虽然不懂python,不过你这
cfgFile = f.read()
f.close()
是不是close得太快了,我想python不会一次性把整个文件读进内存吧。
你去查查api文档吧

赤色彗星SE 发表于 2010-5-2 18:50

- -cfgFile是有内容的....

eph 发表于 2010-5-2 19:19

……我只想吐槽这 C 味浓浓的 Python

eph 发表于 2010-5-2 20:10

走到12718就报错....搜不出什么结果,把newFile = newFile + binascii.a2b_hex(2*\'\'+hex(asciiNum))拿了就可以走完.....但是这个是在哪里影响循环了?
赤色彗星SEXY 发表于 2010-5-2 18:04 http://bbs.saraba1st.com/2b/images/common/back.gif

2*\'\'+hex(asciiNum) 改成 \'%02x\' % asciiNum
这段代码我很有冲动改成三行以内……

赤色彗星SE 发表于 2010-5-2 20:11

从报错的地方再开始循环
for i in range(12719,len(cfgFile)):
走几十次循环再报错....
换报错的地方开始循环几十次又报错.....
妈的是我傻逼还是python傻逼?

赤色彗星SE 发表于 2010-5-2 20:39

谢5楼.....想问下我循环出错的原因

eph 发表于 2010-5-2 20:51

谢5楼.....想问下我循环出错的原因
赤色彗星SEXY 发表于 2010-5-2 20:39 http://bbs.saraba1st.com/2b/images/common/back.gif

看下 binascii 的文档吧,a2b_hex 里边必须是偶数长度的字符串,每两位构成一个字符,虽然我也没看懂你那样写是什么意思……还不如用 ord 和 chr ……

赤色彗星SE 发表于 2010-5-2 20:53

本帖最后由 赤色彗星SEXY 于 2010-5-2 20:54 编辑

hex(asciiNum) 把asciiNum转16进制...但是前面多了个ff,于是把结果拿来当字符串处理,把前面的ff替换成空白....

单独执行一直都没问题的,循环几十次就出一次问题,真奇怪

eph 发表于 2010-5-2 22:43

……怎么还没明白,asciiNum < 16 就会出错呗

Eternal Wind 发表于 2010-5-3 01:43

改变一下风格吧.....oo为啥能发展..是因为易读..你这一写...
页: [1]
查看完整版本: 麻烦帮看下我的python代码有啥问题...很短的