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 ...
随机推荐
- c# 关于页面生命周期
每次遇到这个问题,总是含含糊糊的说不清楚,今天就在这里统一整理一下,以便以后的查看. 一般来说,页要经历下表概述的各个阶段.除了页生命周期阶段以外,在请求前后还存在应用程序阶段,但是这些阶段并不特定于 ...
- 4.Git基础-查看提交历史
1.查看提交历史 -- git log 使用 git log 可以查看到所有的提交(commit)历史. 1. $ git log 列出所有commit,最新的commit在最上面.会显示每个提交 ...
- iReport 5.6.0 Error: net.sf.jasperreports.engine.JRException: Error executing SQL statement for : data 最优解决方案
问题描述 近期学习iReport(个人使用的是最新版本的 iReport-5.6.0,MySQL是 5.5.56版本),遇到一些问题,在安装完成后,创建了数据库,配置了MySQL数据库连接信息,新建报 ...
- WeakHashMap
WeakHashMap 今天在具体业务的时候看到HashMap和WeakHashMap的区别.因为PHP语言并没有这种概念.所以很好奇做了一下研究. WeakHashMap WeakHashMap所谓 ...
- DDD实战进阶第一波(十五):开发一般业务的大健康行业直销系统(总结篇)
前面我们花了14篇的文章来给大家介绍经典DDD的概念.架构和实践.这篇文章我们来做一个完整的总结,另外生成一个Api接口文档. 一.DDD解决传统的开发的几大问题: 没有描述需求的设计模型:而是直接通 ...
- redis 系列20 服务器上
一.客户端与服务端交互 本篇简单介绍下服务器,服务器运行涉及的内部原理知识很多,主要了解Redis服务器内部要做哪些事情,需要开发人员去干预的比较少.Redis服务器负责与多个客户端建立网络连接,处理 ...
- 关于HotSpot VM以及Java语言的动态编译 你可能想知道这些
目录 1 HotSpot VM的历史 2 HotSpot VM 概述 2.1 编译器 2.2 解释器 2.3 解释型语言 VS 编译型语言 3 动态编译 3.1 什么是动态编译 3.2 HotSpot ...
- ELK-安装kibana
注意:在下载tar包的时候需要注意下安装的es版本号,按照官网的说明版本是对应一致的. #下载tar包$ wget https://artifacts.elastic.co/downloads/kib ...
- Android Nine-patch(.9.png)小结
最近在项目开发过程中,因为界面布局美化的需要开始接触到.9.png,无论是Goolge官方文档还是网上其他资料, 都给出了很多关于.9.png的基本介绍,.9.png基础文章推荐以下几篇: Googl ...
- MarkDown语法总结
MarkDown常用语法讲解,写博客使用. 一丶标题的设置. 标题设置使用#来区分一级标题,几个#代表几级标题. 图片如下. 二丶添加代码块,以及标记代码. 1.添加代码块使用语法三个 '设置 2.添 ...