‘壹’ python中四种配置文件
常用的配置文件后缀是.ini、.conf、.py,当然还有使用.json、.txt的,推荐使用常用的.ini、.py,配置文件的名字一般是config便于理解和使用。
ini配置文件,这类配置文件我们使用内置configparser库来使用,它可以实现配置文件的写入、更新、删除、读取等操作非常方便,建议使用这种方式。
新建一个config.ini的配置文件内容如下,编码格式要是 utf-8 以免出错。:
其中[]中的是section节点,该节点下的等式是option即键=值
然后每一行写一个option ,每个选项就是一个option。直接写名字,后面加 " = " 再加上它的值就行,字符串的表示不要加引号,否则引号也会被解析出来。
可以在配置文件中加入注释 ,但是注释必须是单独的一行,且以 “#” 开头。只是每次运行时不会读入注释,只要运行一次,写入文件后,所有的注释都会消失。
config.json文件
使用python内置的 json 标准库进行解析ini文件。
load() 从json文件中读取json格式数据
loads() 将字符串类型数据转化为json格式数据
mp() 将json格式数据保存到文件
mps() 将json格式数据保存为字符串类型
TOML的语法广泛地由key = "value"、[节名]、#注释构成。
支持以下数据类型:字符串、整形、浮点型、布尔型、日期时间、数组和图表。
config.toml文件
使用外部库 toml 解析toml文件。
安装:pip install toml
读取文件
安装:
YAML是目前最推荐的配置文件格式。优秀的配置文件标准它几乎都有:
容易阅读和修改,支持注释。
支持丰富的数据类型。
不同格式的明确表达。
yaml使用时需要注意:
yaml强制缩进。虽然不规定具体缩进几个空格,但是同一级的内容要保持相同的缩进。
冒号后面一定要加空格, 否则无法解析。
python解析 yaml 可以使用pyyaml库,操作和标准的文件操作非常类似:
得到的data就是解析后的数据,在python当中,它是一个嵌套的字典:
想获取某一项配置,再通过字典的操作获取:
config.yaml文件
读取
‘贰’ 如何用python自建kms服务器
1.安装依赖
yuminstallpython-argparse
2.下载代码
gitclone
3.运行激活服务器
cdpy-kms
pythonserver.py
这时候看到提示消息
TCPserverlisteningat0.0.0.0onport1688.
就是说KMS服务已经在1688端口上打开了,没有错误。这就搭建完毕了。
4.长期运行配置
对于需要长期运行的KMS服务器,可以使用supervisor管理py-kms服务(非必须步骤)
拷贝py-kms文件夹到/usr/local/目录下
cp-rpy-kms/usr/local/
安装supervisor
yuminstallpython-setuptools
easy_installsupervisor
生成默认配置文件(supervisord.conf)
echo_supervisord_conf>/etc/supervisord.conf
编写supervisor脚本,加到/etc/supervisord.conf最后
[program:pykms]
command=python/usr/local/py-kms/server.py
autorestart=true
user=root
以daemon方式运行,执行
supervisord
5.客户端测试
客户端下载py-kms后,cd跳转到该目录,执行
pythonclient.py-vwwwb.vvvtimes.com
结果如下说明安装成功
Connectingtoonport1688...
Connectionsuccessful!
SendingRPCbindrequest...
RPCbindacknowledged.
‘叁’ 如何使用Python3读取配置文件
ini是微软Windows操作系统中的文件扩展名(也常用在其他系统)。
INI是英文“初始化(Initial)”的缩写。正如该术语所表示的,INI文件被用来对操作系统或特定程序初始化或进行参数设置。通过它,可以将经常需要改变的参数保存起来(而且还可读),使程序更加的灵活。
先给出一个ini文件的示例。
1234567891011[School]ip = 10.15.40.123mask = 255.255.255.0gateway = 10.15.40.1dns = 211.82.96.1 [Match]ip = 172.17.29.120mask = 255.255.255.0gateway = 172.17.29.1dns = 0.0.0.0
这个配置文件中保存的是不同场合下的IP设置参数。
首先,Python读取ini配置需要用到ConfigParser包,所以要先加载它。
1import configparser
之后我们需要载入配置文件。
1config=configparser.ConfigParser()
#IpConfig.ini可以是一个不存在的文件,意味着准备新建配置文件。
1config.read("IpConfig.ini")
接下来,我们可以使用configparser.add_section()向配置文件中添加一个Section。
#添加节School
1config.add_section("School")
注意:如果文件中已经存在相应的项目,则不能再增加同名的节。
然后可以使用configparser.set()在节School中增加新的参数。
#添加新的IP地址参数
1234config.set("School","IP","192.168.1.120")config.set("School","Mask","255.255.255.0")config.set("School","Gateway","192.168.1.1")config.set("School","DNS","211.82.96.1")
你可以以同样的方式增加其它几项。
#由于ini文件中可能有同名项,所以做了异常处理
12345678try: config.add_section("Match") config.set("Match","IP","172.17.29.120") config.set("Match","Mask","255.255.255.0") config.set("Match","Gateway","172.17.29.1") config.set("Match","DNS","0.0.0.0")except configparser.DuplicateSectionError: print("Section 'Match' already exists")
增加完所有需要的项目后,要记得使用configparser.write()进行写入操作。
1config.write(open("IpConfig.ini", "w"))
以上就是写入配置文件的过程。
接下来我们使用configparser.get()读取刚才写入配置文件中的参数。读取之前要记得读取ini文件。
12345ip=config.get("School","IP")mask=config.get("School","mask")gateway=config.get("School","Gateway")dns=config.get("School","DNS")print((ip,mask+"\n"+gateway,dns)
下面是一个完整的示例程序,它将生成一个IpConfig.ini的配置文件,再读取文件中的数据,输出到屏幕上。
1# -*- coding: utf-8 -*-import configparser#读取配置文件config=configparser.ConfigParser()config.read("IpConfig.ini")#写入宿舍配置文件try: config.add_section("School") config.set("School","IP","10.15.40.123") config.set("School","Mask","255.255.255.0") config.set("School","Gateway","10.15.40.1") config.set("School","DNS","211.82.96.1")except configparser.DuplicateSectionError: print("Section 'School' already exists")#写入比赛配置文件try: config.add_section("Match") config.set("Match","IP","172.17.29.120") config.set("Match","Mask","255.255.255.0") config.set("Match","Gateway","172.17.29.1") config.set("Match","DNS","0.0.0.0")except configparser.DuplicateSectionError: print("Section 'Match' already exists")#写入配置文件config.write(open("IpConfig.ini", "w"))ip=config.get("School","IP")mask=config.get("School","mask")gateway=config.get("School","Gateway")dns=config.get("School","DNS")print((ip,mask+"\n"+gateway,dns))
‘肆’ python 把token保存到conf.py配置文件中后别的方法获取不到最新的token
a.py12def test(): return Trueb.py12import aprint(a.test())
‘伍’ 怎么在python中创建配置文件
没办法设置默认编辑器,因为可能和其他的无后缀文件冲突。你可以这样右键->open with..->Other.. 在里面找到你的python编辑器。
‘陆’ 在linux和mac os系统中默认安装python对还是不对
1.下载python3源码包wget 官网地址
2. 下载python3编译的依赖包 3 解压 tar -zxvf Python-3.6.6.tgz 4. 进入源码包文件夹cd Python-3.6.6 5.编译且安装 ./configure --prefix=/opt/python36
进入/opt目录查看python36文件夹,我们要的python3都在这了 6./opt/python36/bin/python3
/opt/python36/bin/pip3
7. 为了永久生效path设置,添加到/etc/profile全局环境变量配置文件中 重载配置文件/etc/profile source /etc/profile
最后进入 8 .进入pyhon3 看看《Linux就该这么学》 里面有个专栏是 Linux命令大全(手册
‘柒’ python gunicorn 配置文件在哪
工作中使用gunicorn作为服务器的时候,通过配置文件来启动的,gunicorn启动参数可以从--help中获取,但是配置文件中,没有,下面是一些常见的选项的配置和说明
import logging
import logging.handlers
from logging.handlers import WatchedFileHandler
import os
bind = '0.0.0.0:9010' #绑定的ip已经端口号
backlog = 512 #监听队列
chdir = '/home/test/server/bin' #gunicorn要切换到的目的工作目录
timeout = 30 #超时
worker_class = 'gevent' #使用gevent模式,还可以使用sync 模式,默认的是sync模式
workers = 16 #进程数
threads = 2 #指定每个进程开启的线程数
loglevel = 'info' #日志级别,这个日志级别指的是错误日志的级别,而访问日志的级别无法设置
access_log_format = '%(t)s %(p)s %(h)s "%(r)s" %(s)s %(L)s %(b)s %(f)s" "%(a)s"' #设置gunicorn访问日志格式,错误日志无法设置
其每个选项的含义如下
"""
h remote address
l '-'
u currently '-', may be user name in future releases
t date of the request
r status line (e.g. ``GET / HTTP/1.1``)
s status
b response length or '-'
f referer
a user agent
T request time in seconds
D request time in microseconds
L request time in decimal seconds
p process ID
{Header}i request header
{Header}o response header
"""
accesslog = "/dev/null" #访问日志文件的路径
errorlog = "/dev/null" #错误日志文件的路径
公司的server日志都是按天分割的,多进程中TimeRotatingFileHandler分割日志还是会出问题的,于是便使用了
WatchedFileHandler来记录日志,在server机器上,凌晨加一个自动任务,这样日志就能切割了,但是gunicorn
的logging默认使用的是FileHandler,但是一旦当自动任务备份的时候,它不会自动重新创建,于是便把原有的FileHandler流重定向到了/dev/null,自己再另外添加我想要的Handler即可,如下:
"""
acclog = logging.getLogger('gunicorn.access')
acclog.addHandler(WatchedFileHandler('/home/test/server/log/gunicorn_access.log'))
acclog.propagate = False
errlog = logging.getLogger('gunicorn.error')
errlog.addHandler(WatchedFileHandler('/home/test/server/log/gunicorn_error.log'))
errlog.propagate = False
"""
公司gunicorn 与nginx配合使用,nginx只需要设置一个反向代理
proxy_pass http://127.0.0.1:9010 ;即可
"""
‘捌’ 修改mac默认python版本 为python3
mac下sublime运行python3脚本。刚换mac,重新配置sublime写python脚本的环境。这是因为mac cmd下,命令行python默认是python2,如果自己下了python3,那么相对于的环境变量是python3.我们只需要修改sublimeREPL的python配置文件中python解释器启动方式。步骤如下preference>browse package control
把该文件用sublime打开,查看所有的cmd,把cmd后面的python改成python3即可。
‘玖’ PYTHON配置环境变量无效
将其设置为默认python,可选
cmd命令打开vi ~/.bash_profile进行修改
# Setting PATH for Python 3.6
# The original version is saved in .bash_profile.pysave
# PATH="/Library/Frameworks/Python.framework/Versions/3.6/bin:${PATH}"
PATH="/usr/local/bin:${PATH}"
export PATH
PATH=”/usr/local/Cellar/python/3.6.4_4/bin:${PATH}”
export PATH
alias python="/usr/local/Cellar/python/3.6.4_4/bin/python3.6"
cmd命令:
source ~/.bash_profile
添加zsh配置文件:
HenrydeMacBook% vim ~/.zshrc
HenrydeMacBook% cat ~/.zshrc
source ~/.bash_profile