pyinstaller打包后,配置文件無法正常讀取的解決
pyinstaller打包配置文件無法正常讀取
import os file = os.path.dirname(os.path.abspath(__file__)) cf = configparser.ConfigParser() print(file) cf.read(file+'/data.ini')
先獲取絕對路徑在讀取
pyinstaller又踩一坑,configparser os.mknod
在使用pyinstaller時,有使用configparser模塊。
使用相對路徑。在pycharm中測試,正常,打包成exe,就出錯了
換用絕對路徑,
print(os.getcwd()) fp_dir=os.getcwd() print(fp_dir) fp = fp_dir + '\conf.ini' ?# 定義配置文件名 print(fp)
基本正常。
可是遇到了
conf.read(fp) ?# 打開conf
? ? conf.add_section('conf') ?# 添加conf節(jié)點不能自動創(chuàng)建文件
嘗試os.mknod,windows下根本不支持。
? ? tes = open(fp,'a') ? ? tes.close()
用open方法,終于調(diào)試成功。
完整代碼
def make_conf():
? ? print('make')
? ? conf = ConfigParser() ?# 實例化
? ? print('沒有配置文件,創(chuàng)建中')
? ? tes = open(fp, 'a')
? ? tes.close()
? ? firefox = str(get_extension(['firefox.exe']))
? ? geckodriver = str(get_extension(['geckodriver.exe']))
? ? WeChat = str(get_extension(['WeChat.exe']))
? ? conf.read(fp) ?# 打開conf
? ? if type!='up':
? ? ? ? conf.add_section('conf') ?# 添加conf節(jié)點
? ? print('add section')
? ? conf.set('conf', 'firefox', firefox) ?# 添加值
? ? conf.set('conf', 'geckodriver', geckodriver) ?# 添加值
? ? conf.set('conf', 'wechat', WeChat) ?# 添加值
? ? # conf.set('conf', 'firefox', '') ?# 添加值
? ? # conf.set('conf', 'geckodriver', '') ?# 添加值
? ? # conf.set('conf', 'wechat', '') ?# 添加值
? ? print('set all', fp)
? ? with open(fp, 'w') as fw: ?# 循環(huán)寫入
? ? ? ? conf.write(fw)
? ? return True以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python機器學(xué)習(xí)特征重要性分析的8個常用方法實例探究
本文詳細(xì)介紹8種常用的方法,涵蓋了基于決策樹、集成學(xué)習(xí)模型以及統(tǒng)計學(xué)方法的特征重要性分析,從決策樹模型到SHAP值,深入探討每種方法的原理和示例,幫助全面了解如何評估特征的重要性,將能更好地理解特征對模型預(yù)測的貢獻(xiàn),為提升模型性能和解釋模型決策提供有力支持2024-01-01
python讀寫刪除復(fù)制文件操作方法詳細(xì)實例總結(jié)
這篇文章主要介紹了python讀寫刪除復(fù)制文件操作方法詳細(xì)實例總結(jié),需要的朋友可以參考下2021-04-04
python實現(xiàn)微秒級等待問題(windows)
這篇文章主要介紹了python實現(xiàn)微秒級等待問題(windows),具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2024-06-06
matplotlib subplots 調(diào)整子圖間矩的實例
今天小編就為大家分享一篇matplotlib subplots 調(diào)整子圖間矩的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-05-05
Python生成器generator和yield關(guān)鍵字的使用
生成器是一種特殊的迭代器,可以通過列表推導(dǎo)式的修改或者使用yield關(guān)鍵字來創(chuàng)建,生成器函數(shù)能夠在迭代時動態(tài)產(chǎn)生值,而不是一次性生成所有值,這有助于節(jié)省內(nèi)存,yield關(guān)鍵字使函數(shù)執(zhí)行暫停并保存當(dāng)前狀態(tài),下次調(diào)用時從停止處繼續(xù)執(zhí)行2024-09-09

