0

ユーザー入力を収集してファイルに書き込む Python スクリプトがあります。基本的な構造は、コードが画像のリストを調べ、各画像をユーザーに表示し、入力を介してユーザーにプロンプ​​トを出し、ループを介して反復ごとにユーザー入力をログに記録することです。ファイルのリストが数千に達し、エラーや電源障害などのために再起動する必要がないようにするため、ループでの書き込みは重要です。

コードごとに、関連する部分は次のとおりです。

f=open(outfile,a,newline='')
for i in range(0,numFiles):
    folder = sheet.cell_value(i,22) #get image location from a spreadsheet
    Assess = sheet.cell_value(i,23) #get the current assessment from the spreadsheet
    if len(Assess)==0: #no existing assessment
       impath=os.path.join(folder,'image.png')
       <plt calls to show figure>
       while len(Assess)==0:
           Assess=input('Enter Assessment for row %d:' % i)
       <close figure>
    f.write('%s,'%s\n' % (folder, Assess.upper())) 
f.close()

スプレッドシートには最初の 70 行のデータが既にあるため、最初に入力クエリを取得するのは i=71 です。この行を何度か呼び出して実行しましたinputが、(コードがまだ実行されている間に) メモ帳でファイルを開くと、if len(Assess)==0:. 手動入力をファイルに表示できる唯一の方法は、ファイルを閉じることです。

ファイルの書き込みがAssess=input()書き込みとは異なる扱いをするのはなぜAssess=sheet.cell_value()ですか?

forループ内でファイルを開いて閉じる以外に、各反復の後にこれを書き込む方法はありますか?

4

1 に答える 1