1

我有以下内容,无论我在输入文件中有什么,最后都会给我一个空文件,但我不知道为什么,所以如果可能的话,我想寻求你的帮助,谢谢。

    import re
    import sys
    import os

    if len(sys.argv) > 1 :
         inf = sys.argv[1]
         if os.path.isfile(inf) :
             pass
         else :
              print "Nincs ilyen file!"
              sys.exit(0)
    else :
        print "Nincs argumentum!"

    infile = open(sys.argv[1],"r")
    outfile = open("out.txt","w")

    for t in infile :
         lista = t.split(";;;")
    for i in range(0,len(lista)):
         if lista[i] == "begin" :
              outfile.write("def "+lista[i-1]+"\n")
         elif lista[i] == "end;" :
              outfile.write(lista[i+1]+"\n")
         else :
              outfile.write("    "+lista[i]+"\n")

编辑:

我什至尝试过让它在输出文件中写入一些东西,但它仍然没有做任何事情。

4

2 回答 2

2

完成写入后,不要忘记关闭输出文件。否则你的写语句将不会被保存。

在脚本末尾添加:

outfile.close()

最佳做法也是关闭您正在读取的所有文件。

于 2012-06-01T18:07:28.393 回答
1

您在检查任何行之前阅读了整个文件。因此lista代表文件的最后一行。可能您希望第二个循环在第一个循环for缩进,以便它针对文件的每一行运行,而不仅仅是最后一行。

另外,请不要for i in range(...)访问列表,这会使婴儿耶稣哭泣。for item in lista会好很多,然后你只需测试if item == "begin"等等。

于 2012-06-01T17:57:09.410 回答