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行を表します。おそらく、最初のループに 2 番目のループをインデントして、ファイルの最後の行だけでなく、各行に対して実行されるようにする必要があります。for

また、for i in range(...)リストへのアクセスを拒否してください。赤ん坊のイエスが泣きます。for item in listaはるかに良いでしょう、そしてあなたはただテストするだけですif item == "begin"

于 2012-06-01T17:57:09.410 に答える