文章系列简介
最近写博客,发现许多优秀的系列文章,那我就不禁对写博客这一行为进行的思考。
博客,每个人都写一样差不多,我觉得这样很没意思,况且写博客很花时间?花那么时间去跟别人写差不多的,甚至不如其他人?这样做真的值得吗?
所以我决定改变自己写博客的方式,写写那些自己平常不太关注的小知识点!
如果你一点python基础都没有的话,建议你先去看看基础python教程,如廖雪峰老师的python教程
Action,let’s do it!
python运行时如何获取命令后参数
相信在输入一些命令时候肯定输入过一些带参数的命令吧,如
mysql -uroot -p
u就是参数名称,root便是参数值。
那么自己写的python如何才能接收到这些参数呢?
sys.argv
#!/usr/bin/env python3
# filename: note1.py
# -*- coding: utf-8 -*-
__author__ = 'simfg'
import sys
if __name__ == '__main__':
print(sys.argv)
1.sys.argv就是接受参数的所有变量,第一个变量永远是文件名
2.在命令后输入:
注意切换目录
python3 note1.py
python3 note1.py a b
getopt模块
主要方法是getopt,可用于获取键值对类型的参数
1.例如显示你想这样接收参数
python3 note.py -uroot -pabc
意义就是u、p为参数名称,root、abc分别为参数名称
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
__author__ = 'simfg'
import sys
import getopt
if __name__ == '__main__':
# print(sys.argv)
opt,args = getopt.getopt(sys.argv[1:],'u:p:')
print(opt)
print(args)
getopt这个模块中的getopt方法,第一个参数是参数列表,注意去除第一个文件名参数
第二个参数是指期望接受的参数名,注意每个参数名后面需要加上冒号
第三个参数是可选参数,是接收一个列表,用于接收长参数 ,见下面例子
opt,args = getopt.getopt(sys.argv[1:],'u:p:',['link=','abc='])
需要注意的就是,getopt这个方法返回一个tuple,包括了两个list,第一个list是接收键值对参数,第二个是接收剩余的参数
如果多个参数里面,匹配一个出错,那么在这个参数后面的值都会被列入第二个list,如果命令中参数没有匹配的值将会报错
在p参数后面有两个参数值,其中123被匹配,但是abc去找不到匹配值,那么后面的参数都会被列为第二个list中
第一种短参数只能是一个字母,如果包含两个字母将无法进行识别,因为参数和参数值是写在一起,那么解析的时候就不知道你是想利用一个字母还是两个字母作为参数
有趣的else
一般来说 else语句一般是跟在if语句后面,如
if a > 0:
pass
else
pass
来看看一个有趣的代码片段
for n in range(2, 10):
for x in range(2, n):
if n % x == 0:
print(n, 'equals', x, '*', n//x)
break
else:
print(n, 'is a prime number')
你是否怀疑这个代码片段是错误的呢?
NO,NO,NO,it’s right!
运行结果如下图:
首先你需要知道的是这个用法是正确的
这个else是属于谁的?从格式上来看,很明显这个是属于for的
来解释下上述代码片段,当执行完for循环下的片段,在执行else语句的片段,但是需要注意的是这个else是属于for循环里面的一部分,所以break后退出for循环,自然而然就不会执行else语句的代码片段
欢迎大家留言转载
关注微信公众号:SimFG,随时随地看博客要点