Python书写规范
一、python脚本的规范:
每个脚本都有自己的规范,以下的规范不是强制的,但是规范一下,可以使你的脚本规范、易懂、方便使用。
#!/usr/bin/env python
# -*- coding: utf-8 -*-
这个写在开头,定义脚本编码。现在多数都是UTF8格式,所以写脚本尽量用这个编码,遇到中文可以做编码处理,字符串编码处理主要就是encode和decode
import os,urllib,MySQLdb,time,platform
导入需要的模块。
main():
pass
定义函数
if __name__ == "__main__":
main()
这个就是说脚本从这里往下执行,如果是其他的脚本调用这个脚本,这个脚本不至于执行其他的部分
提示:以上是整个脚本中的规范,大家在写脚本的时候尽量这么做。
二、python的缩进
python的对缩进要求很严格,缩进不对,就会报语法错误;python中缩进就是一个tab键或是4个空格,4个空格比较麻烦,直接一个tab键简单,所以没有特别的需求,缩进一般用tab键。缩进类似于分层,同一缩进就是相同的层次。见如下实例:
if a==0:
print a
else:
print b
三、每一个功能对应一个函数
这一点我认为最重要,每一个功能就写一个函数,这样你的脚本清晰易懂,脚本其他复用这个功能也方便,脚本也不冗余。不建议不要一个函数里面有好多功能,使函数模块化。
四、系统命令的引用
引用系统命令的时候,特别是linux命令,一定要写命令的全路径,比如:
os.popen("/sbin/ifconfig eth0").read()
这个你直接
os.popen("ifconfig eth0").read()
这样也是没有问题的,起码是你手动执行脚本时,这个是会执行的,但是脚本做cron的时候,就不会执行了。所以这个要特别注意。
五、异常处理
try:
pass
except Exception,e:
print e
其中e就是错误错误信息。try的异常处理这么写就足够用了,还有其他的方法,不常用。
以下是一个获取本地ip地址,从数据库查询ip的用途,去连接一个URL,判断这个URL是否可以用,并写日志。主要讲了讲python操作数据库的常用用法。
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
#!/usr/bin/env python# -*- coding: utf-8 -*-import os,urllib,MySQLdb,time,platformdef log_w(text): logfile = "/tmp/websocket.log" if os.path.isfile(logfile): if (os.path.getsize(logfile)/1024/1024) > 100: os.remove(logfile) now = time.strftime("%Y-%m-%d %H:%M:%S") tt = str(now) + "\t" + str(text) + "\n" f = open(logfile,'a+') f.write(tt) f.close()def get_idcname(ip): try: conn = MySQLdb.connect(host = '192.168.8.43',port=3306,user = 'read_app',passwd = '123456',charset='utf8',connect_timeout=20) cursor = conn.cursor()#查询出的结果是元组形式,元组和列表基本一样 #cursor = conn.cursor(cursorclass = MySQLdb.cursors.DictCursor)#查询结果是字典形式 sql = "select host,user from mysql.user where host='%s'" % ip#python中执行sql语句一次只能是一个sql语句,一次只执行一条,如果用分号分开写多条的话是会报错的,如果是多条sql语句可以多写几个sql和cursor.execute()来分开执行 cursor.execute(sql)#执行sql语句 #cursor.executemany("""insert into dist_sniffer.sniffer_order_day values(%s,%s,%s,%s,%s,%s,%s,%s,%s) """,values)#执行组合插入数据库的时候可以用这个,每个%s代表一个数据库字段,values是一个元组或是一个列表 alldata = cursor.fetchall()#接收sql执行结果,如果是写操作的,这个就不用了 #conn.commit()如果是写操作,需要这个去提交 cursor.close() conn.close()#关闭数据库回话 return alldata[0][0].encode('UTF8')#如果是写操作的话就没有返回值了。 except Exception,e: return 0def get_ip(): os = platform.system() if os == "Linux": ip = os.popen("/sbin/ifconfig eth0|grep 'inet addr'").read().strip().split(":")[1].split()[0] elif os == "Windows": import wmi c=wmi.WMI() network = c.Win32_NetworkAdapterConfiguration (IPEnabled=1) for interface in network: if interface.DefaultIPGateway: ip = interface.IPAddress[0] return ip #print interface.IPAddress[0],interface.MACAddress,interface.IPSubnet[0],interface.DefaultIPGateway[0],interface.DNSServerSearchOrder[0],interface.DNSServerSearchOrder[1] #获取出网的ip地址、MAC地址、子网掩码、默认网关、DNSdef web_status(): ip = get_ip() idc_name = get_idcname(ip) url = "http://www.text.com/index.php?idc_ip=%s&idc_name=%s" % (ip,idc_name) get = urllib.urlopen(url) if get.getcode() == 200: aa = int(get.read().strip()) if aa == 1: text = "Webservice return OK" else: text = "Webservice return Error" else: text = "Conect webservice Error" print text log_w(text)if __name__ == "__main__": web_status() |
转载本文出自 “王伟” 博客,请务必保留此出处http://wangwei007.blog.51cto.com/68019/1239422
Python书写规范的更多相关文章
- pycharm如何使用&python书写规范
目录 1.pycharm如何使用 2.python 书写规范 1.pycharm如何使用 #主题的选择 file >> settings >> Editor >> ...
- PyCharm之python书写规范--消去提示波浪线
强迫症患者面对PyCharm的波浪线是很难受的,针对如下代码去除PyCharm中的波浪线: # _*_coding:utf-8_*_ # /usr/bin/env python3 A_user = & ...
- 孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式
孤荷凌寒自学python第十四天python代码的书写规范与条件语句及判断条件式 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 在我学习过的所有语言中,对VB系的语言比较喜欢,而对C系和J系 ...
- 不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8
不是程序员,代码也不能太丑!python官方书写规范:任何人都该了解的 pep8 简介:为什么要强调 书写规范 ?这其实并不关乎"美丑",而是为了 更高的效率(代码阅读.开发.维护 ...
- Python代码书写规范
Python 编码规范 一 代码编排1 缩进.4个空格的缩进(编辑器都可以完成此功能),不要使用Tap,更不能混合使用Tap和空格.2 每行最大长度79,换行可以使用反斜杠,最好使用圆括号.换行点要在 ...
- 【转】python编写规范——中标软件有限公司测试中心
[转]python编写规范 一.说明 二.内容 1. 代码布局 1.1 缩进 1.2 表达式和语句中的空格 1.3 行的最大长度 1.4 空行... 1.5 编码... 2. 语句... 2.1 标准 ...
- 转--python 编码规范
编程规范 1.1. 命名规范 1.1.1. [强制] 命名不能以下划线或美元符号开始和结尾 反例: name / __name / $Object / name / name$ / Object$ 1 ...
- HTML&CSS书写规范
第一部分:HTML书写规范: 1.1 HTML整体结构: 1.1.1:HTML基础设施: 文档以"<!DOCTYPE...>"首行顶格开始,推荐使用"< ...
- 【转】Python——编码规范
来自于 啄木鸟社区 Python Coding Rule --- hoxide 初译 dreamingk 校对发布 040724 --- xyb 重新排版 040915 --- ZoomQuiet M ...
随机推荐
- SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序
SpringBoot学习笔记(11):使用WebSocket构建交互式Web应用程序 快速开始 本指南将引导您完成创建“hello world”应用程序的过程,该应用程序在浏览器和服务器之间来回发送消 ...
- java.sql.SQLException: Access denied for user 'somebody'@'localhost' (using password: YES)
用mybatis和spring整合时出现了一个错误: 我是在IntelliJ IDEA上整合Mybatis和Spring的,运行测试用例出现了如上错误. 红色的马赛克部分是我的名字. 问题是,我的数据 ...
- Android窗口系统第三篇---WindowManagerService中窗口的组织方式
Android窗口系统第一篇—Window的类型与Z-Order确定 Android窗口系统第二篇—Window的添加过程 上面文章梳理了一个窗口的添加过程,系统中有很多应用,每个应用有多个Activ ...
- 英特尔® Software Guard Extensions 教程系列:第一部分,英特尔® SGX 基础
英特尔® Software Guard Extensions 教程系列:第一部分,英特尔® SGX 基础 from:https://software.intel.com/zh-cn/articles/ ...
- Memcached HA架构探索
https://code.google.com/p/memagent/ 标签:memcached magent 高可用 HA 架构原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...
- (转)C++经典面试题(最全,面中率最高)
1.new.delete.malloc.free关系 delete会调用对象的析构函数,和new对应free只会释放内存,new调用构造函数.malloc与free是C++/C语言的标准库函数,new ...
- linux 进程学习笔记-消息队列messagequeue
可以想象,如果两个进程都可以访问同一个队列:其中一个进程(sender)向其中写入结构化数据,另外一个进程(receiver)再从其中把结构化的数据读取出来.那么这两个进程就是在利用这个队列进行通信了 ...
- 关于禁用bootstrap响应式解决方法
前几天接到一个任务,用bootstrap框架写几个静态页面,由于长时间专注于后台开发,所以,花费了3天时间,才终于写完了页面,其中,来回的修改,把遇到的问题说一下. 用bootstarp做完页面后,组 ...
- 关系逻辑运算符---------&&和||
1.&&符号 常规用法没什么好说的,我们来说说其不同于java的特殊之处 (1)&&符号究竟返回什么 我们知道,0,null,defined,null,NaN等都可以转 ...
- Qt容器组件(一)之QGroupBox、QScrollArea、QToolBox、QTabWidget
QT中有九种容器组件,分别是组合框QGroupBox.滚动区QScrollArea.工具箱QToolBox.选项卡QTabWidget.控件栈QWidgetStack.框架QFrame.组件QWidg ...