私は昨日からこの問題をグーグルで調べてきましたが、役に立ちませんでした。
1つのディレクトリ内の多数のファイルをループし、そのループ内の各ファイルの行を処理すると、常に閉じますが、Pythonが同じメモリ空間内のすべてのファイルを開いているように見えるので、 file 以前に開いたファイルからすべてのレコードを取得します。まるでポインター配列にあるかのようです。. . .wtf?
import os
import sys
import glob
import string
import cPickle
path2 = './'
columnShuffleTable = loadColumnTable('myTable') #func previously defined
codeScrambleTable = loadScrambleTable('theirTable') #func previously defined
pathToFiles2 = glob.glob(os.path.join(path2, '*.DAT'))
for curFile in pathToFiles2:
_list = ['',]
#this is the variable with which I'm having a problem
unscrambledCodes = file(curFile[-10:], 'r')
#this always yields the actual first line of the file at which I am currently at
line = unscrambledCodes.readline()
_list[0] = '|' + line.strip() #stripping trailing spaces
#the list length at this point always equates to '1', so up to here everything is great
print "list length:", len(_list)
# this always reads the 2nd line of the very first file I loaded. . .wtf?
line = unscrambledCodes.readline().strip()
while(line):
#for unscrambledCodes [my input file]
print "len list: ", len(_list), "infile", unscrambledCodes
nextLine = unscrambledCodes.readline().strip()
if not nextLine:
_list.append('|' + line)
break
else:
_list.append( '|' + line[:-14] + scrambleCode(line[-12:], columnShuffleTable, codeScrambleTable))
#end if
line = nextLine
unscrambledCodes.close()
outfile = open(curFile[-10:-4] + '.Scrambled', 'w')
output = '\n'.join(_list)
outfile.write(output)
outfile.close()
リクエストに応じて、ここに私の i/o サンプルがあります。
入力ファイル 1:
AB00007737106517 COSTCLASSU275
C00000001003193215575053997633693187714
C000000010031932155750539976105307608239
file2:
AB00007736638744 COSTCLASSU275
C000000010030284907699012480608351468369
C000000020030284907699012480751885101503
file3:
AB00007737148207 COSTCLASSU275
C000000010032271716759259098738354718484
C000000020032271716759259098394986919513
desired output file1:
AB00007737148207 COSTCLASSU275
|C000000010031932155750539976079292077121
|C000000010031932155750539976126217711213
file2:
AB00007736638744 COSTCLASSU275
|C000000010030284907699012480968864628712
|C000000020030284907699012480294550195814
file3:
AB00007737106517 COSTCLASSU275
|C000000010032271716759259098216262704445
|C000000020032271716759259098085462231948
current output file1:
AB00007737148207 COSTCLASSU275
|C000000010031932155750539976079292077121
|C000000010031932155750539976126217711213
file2:
AB00007736638744 COSTCLASSU275
|C000000010031932155750539976079292077121
|C000000010031932155750539976126217711213
.
.
.
|C000000010030284907699012480968864628712
|C000000020030284907699012480294550195814
file3:
AB00007737106517 COSTCLASSU275
|C000000010031932155750539976079292077121
|C000000010031932155750539976126217711213
.
.
.
|C000000010030284907699012480968864628712
|C000000020030284907699012480294550195814
.
.
.
|C000000010032271716759259098216262704445
|C000000020032271716759259098085462231948