python开发规范和(configparser、random模块)
目录结构
bin:存放程序入口,程序启动文件。
conf:存放配置文件,配置文件主要是一些全局变量,路径信息等。
core:程序核心文件,不涉及到业务逻辑。
app:存放和系统业务相关的逻辑。
db:存放系统运行所需的数据文件。
lib:存放公共组件。
log:存放日志文件。
README:软件说明文档。
README:
1、软件名称,软件的基本功能,应用范围。
2、软件运行环境,安装方法,启动方式等。
3、软件简要的使用说明(常用操作)。
4、代码目录结构说明,详细介绍各模块的功能及组织关系。
5、用于用户提交BUG,建议的邮箱。
configparser 配置文件
configparser文件由section组成,每个section下有自己独立的内容。
1、创建配置文件,并写入内容。
import configparser
conf = configparser.ConfigParser() # 创建一个配置文件对象
conf["DEFAULT"] = { # 将内容写入conf对象中
"IP":"127.0.0.1",
"NETMASK":"255.255.255.0",
"PORT:":""
}
conf["USER"] = { # 将内容写入conf对象中
"IP":"192.168.1.1",
"NETMASK":"255.255.255.0",
"GATEWAY":"192.168.1.255",
"PORT":""
}
file_write = open("service.ini",mode="a")
conf.write(file_write) # 将对象中的内容写入文件
file_write.close()
内容如下:
configparse:对象类似于字典,可以向字典一样操作对象。
2、读取配置文件:
import configparser
conf = configparser.ConfigParser() # 创建一个配置文件对象
conf.read("service.ini") # 一定要先读出来,然后才能操作
print(conf["DEFAULT"]["IP"],
conf["DEFAULT"]["NETMASK"],
conf["DEFAULT"]["PORT"])
print(conf["USER"]["IP"],
conf["USER"]["NETMASK"],
conf["USER"]["PORT"]) # 打印内容如下
127.0.0.1 255.255.255.0 = 8080
192.168.1.1 255.255.255.0 8088
3、使用for循环打印配置文件。
import configparser
conf = configparser.ConfigParser() # 创建一个配置文件对象
conf.read("service.ini") # 一定要先读出来,然后才能操作 for k in conf: # 通过循环打印配置文件所有内容
print(k,conf.items(k)) # 打印内容如下
DEFAULT [('ip', '127.0.0.1'), ('netmask', '255.255.255.0'), ('port', '= 8080')]
USER [('ip', '192.168.1.1'), ('netmask', '255.255.255.0'), ('port', ''), ('gateway', '192.168.1.255')]
4、修改配置文件。
修改配置文件后,一定要重新将数据写入文件,因为此时的数据是在内存当中,并没有写入文件,所以下次打开文件时,文件内容并没有被修改。如下操作:
import configparser
conf = configparser.ConfigParser() # 创建一个配置文件对象
conf.read("service.ini") # 一定要先读出来,然后才能操作
conf["DEFAULT"]["IP"] = "192.168.1.110" # 修改DEFAULT节下IP的内容
conf.write(open("service.ini",mode="w"))# 修改内容后一定要重新写入文件
print(conf["DEFAULT"]["IP"]) # 打印内容如下
192.168.1.110
查看文件是否被修改:
5、删除配置文件内容:默认配置文件DEFAULT是不允许删除的。
import configparser
conf = configparser.ConfigParser() # 创建一个配置文件对象
conf.read("service.ini") # 一定要先读出来,然后才能操作
conf.pop("USER") # 删除section
conf.write(open("service.ini",mode="w"))# 删除后一定要重新写入文件
删除后的内容如下:USER字节被删除。
random模块
randrange(start, stop[, step]):这个函数可以理解是从range(start, stop[, step])范围内随机返回一个数。
randint(a, b):随机返回一个整数围在a <= N <= b
random.choice(seq):从一个非空的序列中,随机返回一个元素。
random.choices(seq,k):从一个非空的序列中,随机返回k个元素的列表。
random.shuffle(x[, random]):对可迭代对象随机排序,前提是可跌对象必须是可以被更改的,如列表,集合等不能是字符串或者是元组等不可变数据类型。
random.sample(population, k):population参数是一个序列,或者是一个集合,参数k是要返回元素的数目,返回类型列表。
random.random():返回一个0.0-1.0内的随机小数。
random.uniform(a,b):随机返回一个a和b之间的小数。
下一篇:面向对象一:https://www.cnblogs.com/caesar-id/p/10498347.html
python开发规范和(configparser、random模块)的更多相关文章
- Python开发规范
背景 Python语言规范 Lint 导入 包 异常 全局变量 嵌套/局部/内部类或函数 列表推导(List Comprehensions) 默认迭代器和操作符 生成器 Lambda 函数 条件表达式 ...
- 万恶之源 - Python开发规范
开发规范 什么是开发规范?为什么要有开发规范呢? 你现在包括之前写的一些程序,所谓的'项目',都是在一个py文件下完成的,代码量撑死也就几百行,你认为没问题,挺好.但是真正的后端开发的项目,系统等,少 ...
- python学习笔记(七)- 递归、python内置函数、random模块
1.函数的不固定参数: #参数不是必填的.没有限制参数的个数.返回参数组的元组 def syz(*args): #参数组,不限制参数个数 #‘args’参数的名字可以随便命名 print(args) ...
- python(30)——【random模块】【if __name__ =='__main__'】【os模块】
一.random模块(随机模块) 1.random 常用模块介绍 import random print(random.random()) #返回[0,1)之间的随机浮点数 print(random. ...
- python标准库介绍——27 random 模块详解
==random 模块== "Anyone who considers arithmetical methods of producing random digits is, of cour ...
- (转)Python开发规范
转自:https://www.jianshu.com/p/d414e90dc953 Python风格规范 本项目包含了部分Google风格规范和PEP8规范,仅用作内部培训学习 Python风格规范 ...
- S1.2 Python开发规范指南
参考链接 Python风格规范 分号 不要在行尾加分号, 也不要用分号将两条命令放在同一行. 行长度 每行不超过80个字符 例外: 长的导入模块语句 注释里的URL 不要使用反斜杠连接行. Pytho ...
- 18 python 初学(time、random 模块)
# _author: lily # _date: 2019/1/13 import time import datetime print(help(time)) # print(time.time() ...
- Day13 Python基础之time/datetime/random模块一(十一)
time模块 import time print(help(time)) time.time() #return current time in seconds since the Epoch as ...
随机推荐
- RHEL,红帽CentOS7linux进入单用户(紧急救援)模式修改密码
centos7进入单用户模式 当我们设置用户密码时,有可能会忘记,这时如何登陆呢,单用户模式就可以 首先我们进入开机界面,按e进行选择 会进入以下界面, 然后找到图中红线标注的该行,在行尾添加 i ...
- JavaWeb过滤器.监听器.拦截器-原理&区别-个人总结
对比项 拦截器 过滤器 机制 反射机制 函数回调 是否依赖servlet容器 是 否 请求处理 只能对action请求起作用 几乎所有的请求起作用 对action处理 可以访问action上下文.值栈 ...
- Python 工厂函数和内建函数
工厂函数 工厂函数都是类对象, 即当你调用他们时, 创建的其实是一个类实例 例如: str(), list(), tuple()... 内建函数 内建函数通常是python自定义的一些函数, 这些函数 ...
- 并发编程(八)—— Java 并发队列 BlockingQueue 实现之 ArrayBlockingQueue 源码分析
开篇先介绍下 BlockingQueue 这个接口的规则,后面再看其实现. 阻塞队列概要 阻塞队列与我们平常接触的普通队列(LinkedList或ArrayList等)的最大不同点,在于阻塞队列的阻塞 ...
- 使用ML.NET和Azure Function进行机器学习 - 第2部分
本文是<使用ML.NET和AzureFunction进行机器学习 - 第1部分>的续篇. 像机器一样识别鸢尾花 回顾第1部分,您将使用Visual Studio创建一个新的Azure Fu ...
- 关于mybatis中typeHandler的两个案例
在做开发时,我们经常会遇到这样一些问题,比如我有一个Java中的Date数据类型,我想将之存到数据库的时候存成一个1970年至今的毫秒数,怎么实现?再比如我有一个User类,User类中有一个属性叫做 ...
- 前端笔记之jQuery(下)事件&节点操作&净位置&拖拽&页面卷动值&遍历JSON
一.监听事件大全 1.1 JavaScript事件 onblur 元素失去焦点 onchange 用户改变域的内容 onclick 鼠标点击某个对象 ondblclick 鼠标双击某个对象 onfoc ...
- linux rsync 实际应用
linux rsync 实际应用 一.rsync的概述 rsync是类unix系统下的数据镜像备份工具,从软件的命名上就可以看出来了——remote sync.rsync是Linux系统下的文件同步和 ...
- Mybatis sql映射文件浅析 Mybatis简介(三)
简介 除了配置相关之外,另一个核心就是SQL映射,MyBatis 的真正强大也在于它的映射语句. Mybatis创建了一套规则以XML为载体映射SQL 之前提到过,各项配置信息将Mybatis应用的整 ...
- 【Angular专题】 (3)装饰器decorator,一块语法糖
目录 一. Decorator装饰器 二. Typescript中的装饰器 2.1 类装饰器 2.2 方法装饰器 2.3 访问器装饰器 2.4 属性装饰器 2.5 参数装饰器 三. 用ES5代码模拟装 ...