Я тоже новичок в python, но я думаю, что JSON - лучший формат. Вот некоторый код, который я написал для сохранения и чтения вашего файла в JSON файлах. Я также добавил код, чтобы убедиться, что он сохраняет и открывает файлы. json из того же каталога, в котором находится файл сценария.
Я уверен, что есть лучшие способы сделать это, и я в основном написал это как вызов для себя:)
import pickle
import json
#I'm importing os, and sys to make sure that the file is saved in the same directory as the scriptfile.
#If you want to change this, look for the comment that says #PATH.
import os
import sys
#This function takes two arguments. One is the dict containing the 3D printer data.
#The other is a string to name the file. Note that i'm adding the file type '.json', so only provide the name, ex: 'test'
def save_printer_dict(inData,fileName):
try:
#PATH, change the code: sys.path[0] if you want a static filepath
with open(os.path.join(sys.path[0], fileName+'.json'),'w') as outfile:
json.dump(inData, outfile)
return True
except:
print("Dict received not in proper format")
return False
#This function takes a fileName as a string, adds '.json' to it, opens the content and adds it to a dict that is returned.
def open_printer_dict(fileName):
try:
returnData = {}
#PATH, change the code: sys.path[0] if you want a static filepath
with open(os.path.join(sys.path[0], fileName+'.json'),'r') as infile:
returnData = json.load(infile)
return returnData
except:
print("Can't find "+str(fileName)+".json")
return None
#Here i'm just trying the functions to make sure they work.
printer_vars = {'cost':9999999999, 'life_expectancy':5, 'yearly_work_time':1200, 'bed_surface':16, 'belts':10, 'nozzles':11, 'hotend':49, 'power_per_hour':0.25, 'power_price':0.15}
if save_printer_dict(printer_vars,"test"):
print("File saved")
#Calling this function with a valid filename returns a python dict.
print(open_printer_dict("test"))