Python小问题汇总

如今的时间适合写点最近的小总结,这中间涉及到python/git等问题,我就从python先提及吧.html

1、Pythonpython

1. Python的异常处理git

由于想到本身不断尝试写小程序的话会用到抛出异常信息来判断哪里出现了问题:正则表达式

usage: raise [Exception [, args [, trackback]]]

上面是Python的raise的用法,下面是本身用这个方法实现异常的抛出方法:小程序

1 def check_args(args):
2     if not args.host:
3         msg = 'Args missing! One of the following args should be specified \n' \
4               '--host 192.168.1.1 \n' \
5               '-f TargetFile \n'
6         raise Exception(msg)
7 
8 #参考别人的代码模式,我这样写来抛出异常.

 

2. list转strsocket

这个问题是由于本身的无知吧:函数

命令行传入的host(即ip地址)是list形式,想要经过list转为str的格式以后来进行socket.connect(),报错:

本身想象的姿式:
client.connect((str(args.host), args.p))

正确的姿式:
client.connect((''.join(args.host), args.p))

上图证实本身的愚蠢(可能下次还会犯一样的错):url

 

3. argparse函数spa

 出发的动机是由于本身写的小程序要经过命令行的形式传参并执行命令.命令行

 用本身的简单小实例来显示函数的具体用法吧:

1 def parse_args():
2     parser = argparse.ArgumentParser(prog = 'hello',
3                                      formatter_class = argparse.RawTextHelpFormatter,
4                                      description = '* A tiny toy for fun     *\n'
5                                      'By ST(www.********)',
6                                      usage = 'hellPLC.py [options]')
7     parser.add_argument('-host', metavar = 'HOST [HOST2 HOST3 ...]', type = str,
8                         default = '', nargs = '*',
9                         help = 'Scan the host form command line')

代码很简单,一看就懂大概函数是什么样子,重点是add_argument的参数,当你传入的cmd参数是这种方式的话:

咱们能够看到,须要在-p以后跟一个int型的参数才能够,还有另一种形式.

parser.add_argument('-p', metavar = 'PORT', type = int,
                        default = '')

这种方式不须要跟参数,只须要相似于"python -h"这种形式就能够执行并获得想要的结果:

这里就须要对这个函数的各个参数的功能有个基本的了解,这样才能用起来舒服.

1 parser.add_argument('-b', default= False, dest='b', action='store_true',
2                         help = 'Get the base info')

下图就是咱们能够跟的参数,本身的问题就是区分清楚action和dest这两个参数,还有default,type等.

 

4. 正则匹配

这个东西有点高深了,最初的想法是使用正则来转变接收到的数据的格式,问过达哥以后本来recv到的数据在encode以后的类型是"str",以前本身的想法是把数据转成list格式,以后提取之类的方便,但"str"类型也能够直接利用偏移来进行分析也能够,直接用"str[]"就能够搞定,由于这个过程当中不须要可视化的打印出来,须要打印的是分析以后的结果.因此正则先用不到.
不过仍是要把搜资料的时候以为不错的连接放一下:
 
一篇是百度文库的:
一篇是博客园的,里面有那张我的感受很经典的图片:

 

5. 格式化字符串

1 temp = '123456'
2 print("word:%s" %temp)
3 
4 output: word:123456

 

很简单就能够搞定,可是当时想要返回取多个返回值,一会儿蒙住不知道怎么搞了,呵呵了~

1 f.write ("Block Type: %s \n"
2          "Block count: %s \n"
3          %(block_type, block_count))
4          return block_type, block_count

 

 代码很容易看,就是这样,搞定了.

先到这里,都是小问题,作个记录

相关文章
相关标签/搜索