1、subprocess:
subprocess.Popen() ----->所有参数self,args,bufsize=0,executable=None,stdin=None,stdout=None,stderr=None,preexec_fn=None,close_fds=False,shell=False,cwd=None,env=None,universal_newlines=False,startupinfo=None,creationflags=0,timeout=None,restore_signals=True,start_new_session=False,pass_fds=()

shell默认为False,在Linux下,shell=False时, Popen调用os.execvp()执行args指定的程序;shell=True时,如果args是字符串,Popen直接调用系统的Shell来执行args指定的程序,如果args是一个序列,则args的第一项是定义程序命令字符串,其它项是调用系统Shell时的附加参数。

内部常见参数&& args,stdin=None,stdout=None,stderr=None,shell=False

–args:command指令,可以是字串"adb devices",可以是[“adb”,“devices”]
–stdin:读取内容
–stdout:输出内容,一般指定subprocess.PIPE,提供缓存区
–stderr:存储错误信息,一般指定subprocess.PIPE,提供缓存区

一般用法:
devices = subprocess.Popen("adb devices",stderr=subprocess.PIPE,stdout=subprocess.PIPE)
devices.communicate()  
## communicate()方法会阻塞父进程,直到子进程完成。也就是读取文本成功。
devices.stdout.read()  
## 读取command执行返回的信息
devices.stderr.read()  
## 读取command执行返回的错误信息

读取数据均为bytes格式。

2、os获取当前路径
import os,sys
使用
sys.path[0]、sys.argv[0]、os.getcwd()、os.path.abspath(file)、os.path.realpath(file)
1、sys.path是Python会去寻找模块的搜索路径列表,sys.path[0]和sys.argv[0]是一回事因为Python会自动把sys.argv[0]加入sys.path。

2、如果你在C:\test目录下执行python getpath\getpath.py,那么os.getcwd()会输出“C:\test”,sys.path[0]会输出“C:\test\getpath”。

3、如果你用py2exe模块把Python脚本编译为可执行文件,那么sys.path[0]的输出还会变化:

4、如果把依赖库用默认的方式打包为zip文件,那么sys.path[0]会输出“C:\test\getpath\libarary.zip”;

5、如果在setup.py里面指定zipfile=None参数,依赖库就会被打包到exe文件里面,那么sys.path[0]会输出“C:\test\getpath\getpath.exe”。

3、urllib相关注意点:
urllib.parse.quote()与urllb.parse.urlencode() 区别与使用
在这里插入图片描述
urlencode编码传参必须是dict类型,得到的结果如下:name=%E5%B0%8F%E5%A4%AA%E9%98%B3&age=18&addr=hb

quote编码传参为字串,得到的结果如下:
%7B%22name%22%3A%22%E5%B0%8F%E5%A4%AA%E9%98%B3%22%2C%20%22age%22%3A%20%2218%22%2C%20%22addr%22%3A%20%22hb%22%7D

unquote作用为quote的相反。

4、os.walk基础用法。路径处理神器。
os.walk(top):循环遍历路径以及文件,通常用法:

for root,dirs,file in os.walk(path):
		print(root,dirs,file)

## root为搜索的根路径,即path路径
## dirs为搜索到的所有文件夹
## file为搜索到的所有文件