Mam słownik i próbuję zapisać go do pliku.
exDict = {1:1, 2:2, 3:3}
with open('file.txt', 'r') as file:
file.write(exDict)
Mam wtedy błąd
file.write(exDict)
TypeError: must be str, not dict
Więc naprawiłem ten błąd, ale pojawił się inny błąd
exDict = {111:111, 222:222}
with open('file.txt', 'r') as file:
file.write(str(exDict))
Błąd:
file.write(str(exDict))
io.UnsupportedOperation: not writable
Nie mam pojęcia, co robić, ponieważ nadal jestem początkującym użytkownikiem Pythona. Jeśli ktoś wie, jak rozwiązać problem, prosimy o udzielenie odpowiedzi.
UWAGA: używam Pythona 3, a nie Pythona 2
=
znaku, moja edycja może załatwić sprawę.str(exDict)
, co dałoby, nie zawsze będzie prawidłowym kodem JSON. Jednym z powodów z tyłu głowy jest to, że pojedyncze cudzysłowy nie są prawidłowe w pliku JSON, podczas gdy mogą występować, gdy używamystr
metody.Robię to tak w Pythonie 3:
with open('myfile.txt', 'w') as f: print(mydictionary, file=f)
źródło
str(mydict)
do pliku, jest właśnie to, że nie potrzebujeszeval
zawartości, aby odzyskaćdict
obiekt.eval
to rosk bezpieczeństwa i nie powinien być używany, jeśli dostępne są lepsze opcje.fout = "/your/outfile/here.txt" fo = open(fout, "w") for k, v in yourDictionary.items(): fo.write(str(k) + ' >>> '+ str(v) + '\n\n') fo.close()
źródło
with
instrukcji podczas czytania i zapisywania do plików: stackoverflow.com/questions/3012488/ ...Problem z pierwszym blokiem kodu polegał na tym, że otwierałeś plik jako „r”, mimo że chciałeś do niego pisać używając
'w'
with open('/Users/your/path/foo','w') as data: data.write(str(dictionary))
źródło
Jeśli potrzebujesz słownika, który możesz zaimportować z pliku według nazwy, a także dodaje wpisy, które są ładnie posortowane i zawierają ciągi znaków, które chcesz zachować, możesz spróbować tego:
data = {'A': 'a', 'B': 'b', } with open('file.py','w') as file: file.write("dictionary_name = { \n") for k in sorted (data.keys()): file.write("'%s':'%s', \n" % (k, data[k])) file.write("}")
Następnie do importu:
from file import dictionary_name
źródło
Dla miłośników rozumienia ze zrozumieniem listy wszystkie
key : value
pary zostaną zapisane w nowych wierszachdog.txt
my_dict = {'foo': [1,2], 'bar':[3,4]} # create list of strings list_of_strings = [ f'{key} : {my_dict[key]}' for key in my_dict ] # write string one by one adding newline with open('dog.txt', 'w') as my_file: [ my_file.write(f'{st}\n') for st in list_of_strings ]
źródło
Wiem, że to stare pytanie, ale pomyślałem również o udostępnieniu rozwiązania, które nie obejmuje json. Osobiście nie lubię json, ponieważ nie pozwala na łatwe dołączanie danych. Jeśli punktem początkowym jest słownik, możesz najpierw przekonwertować go na ramkę danych, a następnie dołączyć go do pliku txt:
import pandas as pd one_line_dict = exDict = {1:1, 2:2, 3:3} df = pd.DataFrame.from_dict([one_line_dict]) df.to_csv('file.txt', header=False, index=True, mode='a')
Mam nadzieję, że to pomoże.
źródło
exDict = {1:1, 2:2, 3:3} with open('file.txt', 'w+') as file: file.write(str(exDict))
źródło
Możesz wykonać następujące czynności:
import json exDict = {1:1, 2:2, 3:3} file.write(json.dumps(exDict))
https://developer.rhino3d.com/guides/rhinopython/python-xml-json/
źródło
import json with open('tokenler.json', 'w') as file: file.write(json.dumps(mydict, ensure_ascii=False))
źródło