开发过程中一些很小但比较重要的问题

1. 路径问题

这两天用到配置文件,我把一些常用的数据放到了config.ini文件里,以前都是把路径写死的,但是有个大问题,在windows和linux里面的路径表达方式也不一样,这样容易造成不兼容的问题经过查询资料,发现了一个很好的解决方法,一般路径路径问题都可以这样来解决:

比如,我的配置文件路径是这样的:

	- 根目录
	  + 其他文件夹
	  + a文件夹
	  + b文件夹
	  	config.ini 
	  c.py

我想在c.py里引用config.ini里面的参数,可以这样写:

# 这里用到python的configparser模块  后面有说明
from configparser import ConfigParser
import os
config = ConfigParser()
config.read(os.path.join(os.getcwd(), 'b文件夹''config.ini'), encoding='utf-8-sig')

一般常用到的路径读取方式

"""
os.path.abspath(path)    返回path规范化的绝对路径。
os.path.split(path)    将path分割成目录和文件名二元组返回。 
os.path.dirname(path)    返回path的目录。其实就是os.path.split(path)的第一个元素。
os.path.basename(path)    返回path最后的文件名。如何path以/或\结尾,那么就会返回空值。即os.path.split(path)的第二个元素。
os.path.commonprefix(list)      返回list中,所有path共有的最长的路径
os.path.exists(path)        如果path存在,返回True;如果path不存在,返回False。
os.path.isabs(path)     如果path是绝对路径,返回True。
os.path.isfile(path)      如果path是一个存在的文件,返回True。否则返回False。
os.path.isdir(path)     如果path是一个存在的目录,则返回True。否则返回False。
os.path.join(path1[, path2[, ...]])     将多个路径组合后返回,第一个绝对路径之前的参数将被忽略。
os.path.normcase(path)      在Linux和Mac平台上,该函数会原样返回path,在windows平台上会将路径中所有字符转换为小写,并将所有斜杠转换为饭斜杠。  
os.path.normpath(path)      规范化路径。
"""

2. 配置文件的读取

ini配置文件的好处在于可以在配置文件中添加多个作用相同参数不同的数据,切换也特别方便,比如我想从一个数据库切到另一个数据库,只需要修改一个参数就可以了。配置文件也可以添加邮箱、url、设置等等一些常用的数据。
前面已经提到,可以用configparser来读取配置文件
这里一些常用的操作:

"""
    1.读取
        read(filename) 直接读取ini文件内容
        sections() 得到所有的section,并以列表的形式返回
        options(section) 得到该section的所有option
        items(section) 得到该section的所有键值对
        get(section,option) 得到section中option的值,返回为string类型
        getint(section,option) 得到section中option的值,返回为int类型
        (相应的还有getboolean()和getfloat() 函数)
    2.写入
        add_section(section) 添加一个新的section
        set( section, option, value) 对section中的option进行设置
        config.write() 写入
"""

读取的例子前面已经有,这里只提一下写入的方法:

# 第一种写法
config["a"] = {'key1': 'val1',
               'key2': 'val2',
               'key3': 'val3'}

# 第二种写法
config['b'] = {}
config['b']['key4'] = 'val4'
# 第三种写法
config['c'] = {}
topsecret = config['c']
topsecret['key5'] = 'val5'  # mutates the parser
topsecret['key6'] = 'val6'  # same here
 
# 写入后缀为.ini的文件 (如果是追加,请用'a'模式写入)
with open('config.ini', 'w') as f:
    config.write(f)

运行结果:

[a]
key1 = val1
key2 = val2
key3 = val3

[b]
key4 = val4

[c]
key5 = val5
key6 = val6
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值