Как распечатать ключ и значение в файл *.txt из словаря?
Я попытался прочитать данные и распечатать их в файле *.txt, но файл name.txt пуст.
#The code that I have tried
#my_dict is given above
def create_dict():
with open("name.txt", "w+") as f:
for key, value in my_dict:
print(key, value)
f.write('{} {}'.format(key, value))
Я думаю, вам нужно сделать отступ в коде после оператора with.
for key, value in dict.items() также не используйте dict, так как это встроенное имя Python
Кроме того, не close() свой файл на каждой итерации цикла; это не имеет смысла. У вас уже есть это в блоке with, поэтому закрытие обрабатывается за вас
Отступ невозможен. Вы не можете close открыть файл в with обработчике контекста, особенно после первой итерации (но он написал бы запись один перед закрытием ... хотя без завершающей новой строки, поэтому файл не является допустимым текстовым файлом).
Почему бы просто не сериализовать dict в файл JSON?
Добро пожаловать в StackOverflow. Пожалуйста, прочтите и следуйте инструкциям по размещению сообщений в справочной документации, предложенным при создании этой учетной записи. Здесь применяется Минимальный, полный, проверяемый пример. Мы не сможем эффективно помочь вам, пока вы не опубликуете свой код MCVE и точно не укажете проблему. Мы должны иметь возможность вставить ваш опубликованный код в текстовый файл и воспроизвести указанную вами проблему. StackOverflow не является ресурсом для проектирования, кодирования, исследований или учебных пособий.






def create_dict():
with open("name.txt", "w") as f:
for key, value in thisdict.items():
print(key, value)
f.write('{} {}'.format(key, value)+"\n")
Вы должны переименовать свой словарь с «dict» на что-то другое (выше, как thisdict), так как dict — это специальное встроенное имя в Python.
Как указывалось в других ответах, ваш отступ просто неверен внутри вашего утверждения with.
Хотя, если ваша цель — сохранить словарь для дальнейшего использования, лучше всего использовать pickle. Это не сработает, если вы хотите сохранить словарь в удобочитаемом формате, но будет намного эффективнее в качестве метода хранения данных.
import pickle
my_dict = {
'foo': 'bar',
'baz': 'spam'
}
# This saves your dict
with open('my_dict.p', 'bw') as f:
pickle.dump(my_dict, f)
# This loads your dict
with open('my_dict.p', 'br') as f:
my_loaded_dict = pickle.load(f)
print(my_loaded_dict) # {'foo': 'bar', 'baz': 'spam'}
Компромисс между эффективностью хранения и удобочитаемостью может заключаться в использовании вместо этого json. Это не удастся для сложных объектов Python, которые не сериализуемы в JSON, но, тем не менее, являются вполне допустимым методом хранения.
import json
my_dict = {
'foo': 'bar',
'baz': 'spam'
}
# This saves your dict
with open('my_dict.json', 'w') as f:
# passing an indent parameter makes the json pretty-printed
json.dump(my_dict, f, indent=2)
# This loads your dict
with open('my_dict.json', 'r') as f:
my_loaded_dict = json.load(f)
print(my_loaded_dict) # {'foo': 'bar', 'baz': 'spam'}
Это немного вводящее в заблуждение название функции. Кроме того, старайтесь не затенять встроенные имена, такие как
dict, своими собственными переменными. Вместо этого назовите этоmy_dict. В любом случае, где определяется вашdict?