关于list范围问题

关于list范围问题

我写了一个往代码里加入调试信息的py,在window下的activepython下跑的很好,一到linux下就
说超出范围,很不解,希望大侠们指教:
linux下的error info:
————————————————————————————————
[root@localhost py]# python del_debug.py ./
Starting now... ./
2.c ---starting replace...
Traceback (most recent call last):
  File "del_debug.py", line 39, in ?
    walk(path, visit, 0)
  File "/usr/lib/python2.3/posixpath.py", line 282, in walk
    func(arg, top, names)
  File "del_debug.py", line 32, in visit
    replace_c(files)
  File "del_debug.py", line 17, in replace_c
    if all == debug_str :
IndexError: list index out of range
—————————————————————————————————

code如下:
—————————————————————————————————

[Copy to clipboard] [ - ]
CODE:
from os.path import walk, join, normpath
import sys

if len(sys.argv) != 2:
    print 'argv error'
    sys.exit(0)

debug_str = 'PT(\"Press any and continue!\");\n'

def replace_c(file_c):
    f = file(file_c)
    all = f.readlines()
    f.close()

    for i in range(0, len(all)-1):
        if all[i] == debug_str :
            del all[i]

    ff = file(file_c, 'w')
    for i in range(0, len(all)-1):
        ff.write(all[i])
    ff.close()
   

def visit(arg, dirname, names):
    files=[normpath(join(dirname, file)) for file in names]

    for i in range(0, len(files)):
        if files[i][-2:] in ['.c'] :
            replace_c(files[i])
        if files[i][-4:] in ['.cpp'] :
            replace_c(files[i])
   
if __name__=="__main__":
    path=sys.argv[1]
    walk(path, visit, 0)

——————————————————————————————————
先谢谢了!

不会五一放假都出去玩了吧,自己顶个先!
建议把相关的值打出来看一看,再进行调试。
IndexError: list index out of range

看最后的提示是下标超出范围
比喻a只有10个元素 如果a[11]就是这种错误

检查你里面list操作相关代码
非常感谢,已经搞定,list comprehension非常好用。
lz原来的做法犯了原则性错误。在遍历一个list的时候不要对这个list进行增删处理。如果是在cpp里面做类似的操作程序很容易就会崩溃的。