settings.txt хранится и обрабатывается в скомпилированном однофайльном приложении, но он не записывается. Это работает до компиляции Pyinstaller, когда файл находится в том же каталоге, что и скрипт.Приложение Pyinstaller обращается к файлам txt, но не записывает их (работает до компиляции приложения)
приложение компилируется из терминала:
pyinstaller script.spec script.py --windowed --onefile
a.datas
устанавливается в файле спецификации, как:
a.datas += [(‘settings.txt’,’/path/to/settings.txt’, "DATA”)]
и файл правильно прочитать в приложении:
with open(resource_path('settings.txt'), 'r') as f2
Однако файл не обновляется при попытке перезаписи файла:
def OnExit(self, event):
with open(resource_path('settings.txt'), 'w') as f2:
f2.write('update')
self.Destroy()
resource_path
определяется как:
def resource_path(relative_path):
""" Get absolute path to resource, works for dev and for PyInstaller """
try:
# PyInstaller creates a temp folder and stores path in _MEIPASS
base_path = sys._MEIPASS
except Exception:
base_path = os.environ.get("_MEIPASS2", os.path.abspath("."))
return os.path.join(base_path, relative_path)
'f2.write («обновление»)' вы потеряете данные, если не закрывать файл. Перед выходом из приложения нужно 'f2.close()'. – dsgdfg
Я считаю, что метод close() автоматически вызывается при использовании 'with' – Phillip
Нет, если ваш файл настроек пуст! – dsgdfg