ユーザー入力を収集してファイルに書き込む 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ループ内でファイルを開いて閉じる以外に、各反復の後にこれを書き込む方法はありますか?