doska писал(а):
Можно конечно тупо .var файл перезаписывать но это как-то не по феньшуй.
Никто не укажет направление?
Можно еще взять такой готовый класс
Код: Выделить всё
import os # needed to get the paths and directorys
from linuxcnc import ini
import ConfigParser
CONFIGPATH1 = os.environ['CONFIG_DIR']
cp1 = ConfigParser.RawConfigParser
class ps_preferences(cp1):
types = {
bool: cp1.getboolean,
float: cp1.getfloat,
int: cp1.getint,
str: cp1.get,
repr: lambda self, section, option: eval(cp1.get(self, section, option)),
}
def __init__(self, path = None):
cp1.__init__(self)
if not path:
path = "~/.toolch_preferences"
self.fn = os.path.expanduser(path)
self.read(self.fn)
def getpref(self, option, default = False, type = bool):
m = self.types.get(type)
try:
o = m(self, "DEFAULT", option)
except Exception, detail:
print detail
self.set("DEFAULT", option, default)
self.write(open(self.fn, "w"))
if type in(bool, float, int):
o = type(default)
else:
o = default
return o
def putpref(self, option, value, type = bool):
self.set("DEFAULT", option, type(value))
self.write(open(self.fn, "w"))
тогда создать экземпляр класса(с использованием доп. функции, читающей имя файла преференций из .ini файла)
Код: Выделить всё
inipath = os.environ["INI_FILE_NAME"]
self.inifile = ini(inipath)
if not self.inifile:
print("**** probe_screen GETINIINFO **** \n Error, no INI File given !!")
sys.exit()
def get_preference_file_path(self):
# we get the preference file, if there is none given in the INI
# we use toolchange2.pref in the config dir
temp = self.inifile.find("DISPLAY", "PREFERENCE_FILE_PATH")
if not temp:
machinename = self.inifile.find("EMC", "MACHINE")
if not machinename:
temp = os.path.join(CONFIGPATH1, "probe_screen.pref")
else:
machinename = machinename.replace(" ", "_")
temp = os.path.join(CONFIGPATH1, "%s.pref" % machinename)
print("**** probe_screen GETINIINFO **** \n Preference file path: %s" % temp)
return temp
self.prefs = ps_preferences( self.get_preference_file_path() )
запись в файл параметра
и чтение из файла
Код: Выделить всё
self.prefs.getpref( "param1", 0.0, float )
Пример использования класса ps_preferences можно посмотреть в
probe_screen.py
P.S. Вспомнил, что
уже писал о таком недавно в этой теме, sorry за повтор

.