1

ファイルのリストを順番に開き、各ファイルのデータを使用して操作を実行するプログラムを Python v3.3 で作成しました。ただし、何らかの理由で、プログラムはファイルを開くときに、リスト内の最後のファイルの最後の行を一貫して無視します。以前のファイルはすべて正常に読み取られます。ファイル自体のフォーマットは同じであり、リストの最後のファイルには、他のすべてのファイルには存在しない追加の空白や改行文字はありません。

コードは以下のとおりです。

counter3=0
for counter3 in range(counter3,numSteps):
# open up each step in the list of steps across the chromosomal segment:
    L=shlex.shlex(stepFileIndex[counter3],posix=True)
    L.whitespace += '\t'
    L.whitespace_split = True
    L=list(L)
    #print(L)
    stepNumber = int(L[0])
    stepStart = int(L[1])
    stepStop = int(L[2])
    stepSize = int(stepStop-(stepStart-1))
#Now open the file of SNPs corresponding with the window in question and convert it into a list:
    currentStepFile = open(("C:/Users/gwilymh/Desktop/Python/Sliding Window Analyses-2/%s_%s_step_%s.txt")%(str(segmentNumber),str(segmentName),str(counter3+1)),'r')
    currentStepFile = list(currentStepFile)
    nSNPsInCurrentStepFile = len(currentStepFile)
    print("number of SNPs in this step is:", nSNPsInCurrentStepFile)
    print(currentStepFile)

リストの最後の 2 つのファイルは次のとおりです。

1_segment1_step_7.txt
['1503', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'C']
['1505', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'T', 'G']

1_segment1_step_8.txt
['1950', 'G', 'G', 'G', 'C', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G', 'G']
['1967', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'G']
4

1 に答える 1

0

スクリプトの実行中にファイルが書き込まれていますか?

ぶら下がっているファイルハンドルと、おそらく経由で空にされるべきであったバッファを除いて、f.close()またはf.flush()コードに何も問題はありません。

ただし、コードを使用せず、代わりにループlist(filehandle)に置き換えることで、コードを改善できます。forコメントでお気づきかもしれませんが、これは一般的な方法ではありません。

また、ファイルハンドルを指す変数を置き換えるため、currentStepFileコードはガベージコレクションがそれを閉じるのを待つ必要があります。

コードの他の場所でもこれを行うと、将来的にこの問題または他の問題の原因になる可能性があります。

于 2013-03-04T21:01:36.860 に答える