CSVファイルから質問を受け取り、質問してスコアを重み付けしたプログラムを作成しようとしています。最低得点が最初に出ます。os関数の後にCSVのPythonが範囲外になる
これにはソート機能があります。
def sort_records(csv_filename, sorted_file):
with open(csv_filename, 'r') as i, open(sorted_file, 'w') as o:
reader = csv.reader(i, delimiter = ',')
writer = csv.writer(o, delimiter=',')
writer.writerow(next(reader)) # header row
writer.writerows(sorted(reader, key=operator.itemgetter(0)))
これは初めて問題なく動作します。
質問がもう出ることがなくなり、ユーザーがプログラムを再度実行することを決定した場合、(new_filenameとanswer_fileという名前の)新しいファイルが作成され、元のファイルが削除され、ソートされますファイル(ファイル、sorted_file)を単に「ファイル」
def end(file, updated_file, sorted_file):
ans_ok = False
while ans_ok == False:
ans = input("That's all folks... go again? Y/N: ")
ans.upper()
if ans == 'N':
print("Press Enter to Exit...")
input(" ")
ans_ok = True
elif ans == 'Y':
os.remove(file)
os.remove(newfile)
os.rename(updated_file,file)
print("\n Ok!\n")
main()
そして私は再びメイン関数を実行しようとすると、それが動作し、その後その更新されたファイルを sort_records機能を実行し、更新されたファイル(answer_file)の名前を変更します名前が変更されたばかりですが、これは次のようになります。
line 24, in sort_records
writer.writerows(sorted(reader, key=operator.itemgetter(0)))
IndexError: list index out of range
EDIT。これは、私がメモ帳の外に二つのファイルのテキストを比較していることを発見したこれらの
def main():
path_ok = False
while path_ok == False:
try:
file = input("Subject File: ")
sorted_file = file[:-4]+'_sorted.sar'
sort_records(file,sorted_file)
path_ok = True
except IOError:
print("\tFile not found. Please input valid filename or path")
updated_file = sorted_file[:-4]+'_final.sar'
rownum = 0
with open(newfile) as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
rownum+=1
ask_question(row,updated_file,reader,sorted_file,file,rownum)
end(file, updated_file, sorted_file)
メインもプログラムに最初に呼び出される関数です
UPDATE の両方を呼び出す主な機能でありますプログラムによって生成される新しいファイルは、次のようになります。 The text in both files
メモ帳は何らかの理由でこれを表示しませんでした。
今、私は別の質問があります。
私はそれが自動的に-の間に書かれている行の空白行を入れずにPythonでCSVファイルに書き込むにはどうすればよいですか?
あなたは 'end'と' sort_records'関数を呼び出す場所からコードを追加します – kvorobiev
ありがとう、ありがとう –
最初にではなく、最後に投稿するときに私は問題があったことを認識しませんでした各行の間の空白行、その質問へのリンクの私の答えを参照してください。私はここに全体的な質問を残して、同様の問題を抱えている人(これが起こるかもしれない)がこれを見ることができるようにしました。 –