Python语法知识点二
1.python文件操作
(1) 清空文件
1 | ## 覆盖文件内容 |
1.Python清空文件并替换内容
(2) 复制文件
1 | ## 引入shuil模块 |
2.执行shell命令
3.测试网络延迟
(一) 为了测试哪个节点更好用,所以我想到了使用python进行测试网络延迟的方式。在python2中,有现成的例子,很多的参考文章都是引用的同一段代码,主要是使用了ping模块,用了ping.quiet_ping函数,但是在python3中似乎没有了这个模块,就像参考文章1,2,3。
(二) 辗转我想到了使用ping命令,ping命令的返回格式如下:
搭配python的subprocess模块,我只需要获取最后一行,然后使用正则表达式提取其中的信息就好了。其实头疼的就是不会写正则表达式。re是Python中用于正则表达式相关处理的类,这四个方法都是用于匹配字符串的,具体区别如下:
(1) match
匹配string 开头,成功返回Match object, 失败返回None,只匹配一个。
(2) search
在string中进行搜索,成功返回Match object, 失败返回None, 只匹配一个。
(3) findall
在string中查找所有 匹配成功的组, 即用括号括起来的部分。返回list对象,每个list item是由每个匹配的所有组组成的list。
(4) finditer
在string中查找所有 匹配成功的字符串, 返回iterator,每个item是一个Match object。
最后的测量网络延迟的python代码
1 | import subprocess |
1.使用正则表达式提取文本的最后一行
2.正则从某个字段批量到最后一行
3.2.8 多行匹配模式
4.3分钟内理解Python的re模块中match、search、findall、finditer的区别
5.ping命令中的RTT
6.正则表达式 进阶(一)– 匹配多连续字符、位置匹配、子表达式使用
7.最全的常用正则表达式大全——包括校验数字、字符、一些特殊的需求等等 (这里有常用的正则表达式的)
8.正则表达式 - 语法
9.python实现ping程序
(三) 还有一个问题就是,如何判断网络是否联通。我们知道,如果ping一个ip地址,如果不通的话,会长时间没有响应,而不是像上面一样,会有返回值。
仔细查看了ping命令的参数,ping命令还有一个特别的参数就是:-W timeout 可以设置超时时间,-W 10
表示设定超时时间为10秒(这里需要说明的是,根据多篇参考资料,timeout是以毫秒为单位的,默认为4000毫秒,但是我的实际测试显示,在我的deppin系统上,这个单位为秒)
【-W timeout】 这个选项仅和-c 选项一起才能起作用。它使 ping 命令以最长的超时时间去等待应答(发送最后一个信息包后)。默认超时时间为4000ms(4s)
除了这个这个-W参数之外,subprocess.check_out(),同样也有一个参数timeout,也可以设置
1 | try: |
(四) 最后一个问题,因为开启和关闭v2ray服务,如何确保脚本以root权限运行。只需要使用os模块的getuid()函数即可,返回值如果是0,则代码运行于root用户下。用户在非特权模式下运行脚本,即没有使用sudo python3 test.py
运行脚本,就提示用户要使用sudo命令。
1 | import os |
4.解析url
1 | import urllib.parse as urlparse |
5.解析base64代码
1 | def base64StrFun(base64Str): |
1.Python3 bytes.decode()方法