Я пытаюсь сохранить в CVS файле некоторую информацию с помощью Python.
Когда я запускаю его, похоже, что он работает, но когда я иду в файл, ничего не выходит
Это мой код:
dic = {"name": "jason", "name": "mike"}
file = "names.csv"
cvs = open(file, "a")
column = "name,name2\n"
cvs.write(column)
for key in dic.keys():
name = key
name2 = dic[key]
fil = name + "," + name2 + "\n"
cvs.write(fil)
Во-первых, серьезная проблема - вы не можете иметь один и тот же ключ несколько раз в dict! У вас могут быть {'names': ['Mike', 'Jason'}}, но, как есть, один будет переписан другим. Это может быть частью вашей проблемы.
Во-вторых, в общем, гораздо проще сделать создание csv через pandas, с такими функциями, как pandas.DataFrame.from_dict
- путь проще, менее подвержен ошибкам и т.д. - на самом деле я настоятельно рекомендую не писать такие файлы вручную. (Хотя это примерно ВСЕ, мне нравятся панды.)
correctDict = {'names': ['Mike', 'Jason']}
df = pandas.DataFrame.from_dict(correctDict)
df.to_csv('myFile.csv')
https://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.from_dict.html
Просто:
import csv
data = {'name':'jason','name':'mike'}
with open('names.csv', 'w+') as csvf:
writer = csv.DictWriter(csvf, fieldnames=['name'])
writer.writeheader()
for key, value in data.items():
writer.writerow(value)
(это csv
, а не cvs
. CSV - значение, разделенное запятой, CVS - аптека).
Вы никогда не закрываете файл. Просто поставьте
cvs.close()
в конце вашего кода, и он должен работать так, как вы ожидаете.