0

Python 2.7では、ファイルリストのリストに対して同じ操作を実行する必要があります。

例、#各ファイルはファイル記述子です。たとえば、fileX = open( "someString"、 "a")

 fileList1 = [file1, file2, file3,file4,file5] 
 fileList2 = [file11, file21, file31,file41,file51] 
 allFilelist = [fileList1, fileList2]

それらにいくつかの文字列を読み書きしようとすると、次のようになります。

 line = item.readline()
 IOError: [Errno 9] Bad file descriptor

 # each file in allFilList is a file list 
 allFilList = [ifcxRpsFileNameL, ircxRpsFileNameL, transXRpsFileNameL, ifcxFileNameL, 
 ircxFileNameL, transXFileNameL]
 for eachFileList in allFilList :
    for item in eachFileList :
            #print item.read 
            line = item.readline()
            #for line in :
            print "the line read from ", item, " is " , line
            ll= line.strip("\n").split()
            if len(ll) == 0 :
                print "the file " , item , " is empty \n"
                exit  
            elif len(ll) != TOTAL_ITR :
                print "the len of the file " , item , " is not " , TOTAL_ITR , "\n"
                exit
            else:
                item.write("\n")
                lt = [float(num) for num in ll]
                item.write(min(lt))
                item.write(" ") 
                item.write(sum(lt)/len(lt))
                item.write(" ")
                item.write(max(lt))
                item.write(" ")
                item.write("\n")
                item.close()
                break

このコメントに応えて:

アイテムを読み取って出力を投稿する前に、アイテムを印刷してください

出力は次のとおりです。<open file 'ND_ifxc_2010_RPS.dat', mode 'a' at 0x2ba38d1e9558>

4

1 に答える 1

3

あなたが持っている問題は、あなたが開いているファイルがモードで開かれているという事実から来ています'a'、そしてそれ故に、読むためではありません。その結果、読み取り用に開いていないファイルから読み取ろうとすると、エラーが発生します。

ファイルパスのリストを保存して、これを行う方がよいでしょう。

  1. 'r'モードで開く
  2. 行を読む
  3. 条件に基づいて、それらを閉じ、'a'モードで再度開き、必要な行を書き込みます。

お役に立てれば

于 2012-07-23T23:00:07.683 に答える