Игнорирование вопросов о том, что list1
и list2
(они неактуальны, если score()
возвращает одно целое число), я думаю, что проблема кроется в вашей структуре цикла.
Вместо
for i in a:
with open("GFOLD_Hisat2.csv", 'wb') as file3:
filewriter = csv.writer(file3)
filewriter.writerow(score(list1, list2, i))
Вы, вероятно, хотите
with open("GFOLD_Hisat2.csv", 'wb') as file3:
filewriter = csv.writer(file3)
for i in a:
filewriter.writerow((score(list1, list2, i),))
В настоящее время вы открываете файл и создание нового автора для каждого значения i
. Обратите внимание, что я превратил результат score
в tuple
.
In [8]: a = [1,2,3,4,5]
In [9]: with open('a.csv', 'wt') as f:
wr = csv.writer(f)
for i in a:
wr.writerow((i,))
...:
In [10]: !cat a.csv
1
2
3
4
5
Я также не знаю, почему вы открываете файл с 'wb'
Как Роб указывает, что вы можете просто использовать понимание - полностью избежать петли. Мой ответ сосредоточен на объяснении ошибки в существующем коде.
Кроме того, если ваш выходной файл действительно будет содержать только один столбец, нет причин использовать csv.writer
. Просто сделайте следующее
a = [1,2,3,4,5]
b = [score(list1, list2, i) for i in a]
with open('a.csv','wt') as f:
f.writelines('\n'.join(map(str,b))
Ну каковы песни1 и песни2? являются ли они фактическими списками, потому что это меняет вещи? Также вы пытались взять «val» из своих скобок, не уверены, что вам нужны эти – SAMO
. Вы должны изменить свой вопрос, чтобы показать, что такое 'list1' и' list2', какой ваш желаемый результат и какой ваш фактический результат. –
Я немного изменил код, чтобы упростить его. – Labrat