常用模块的介绍
3.os模块(知道有这么个功能就行)
链接:https://www.cnblogs.com/linhaifeng/articles/6384466.html#_label3
os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.stat('path/filename') 获取文件/目录信息
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
__file__ 返回当前文件的路径
os.system("bash command") 运行shell命令,直接显示,相当于在pycharm中运行了cmd,但是会直接显示为GBK模式,不能正常打印中文(pycharm为utf-8)。此时,可以用subprocess模块
import subprocess
obj = subprocess.Popen('tasklist',shell=True,
stdout=subprocess.PIPE,
stderr=subprocess.PIPE
)
print(res1.decode('gbk'))
注:obj.stdout为子进程正常运行的结果,显示为b模式
obj.stderr为子进程运行失败的结果,显示为b模式
补充:函数的参数
1.形参和实参
形参即变量名,实参即变量值,函数调用时,将值绑定到变量名上,函数调用结束,解除绑定
注:参数的本质一定是一个确定的值(*****)
import random
print(random.choices([random.randint(2, 6)], k=4))
结果:[2, 2, 2, 2]或[5, 5, 5, 5]或···
结果中的4个数一定相等,因为对于random.choices()来说,参 数random.randint(2, 6)是一个确定的值
2.位置实参和关键字实参
位置参数(形参和实参):按照从左到右的顺序定义的参数
关键字实参:按照key=value的形式定义的实参
二者可以混用:
1. 关键字实参必须在位置实参后面
2. 对同一个形参不能重复传值
3.默认形参
可以传值也可以不传值,经常需要变得参数定义成位置形参,变化较小的参数定义成默认参数(形参)
注意的问题:
1. 默认值只在定义时赋值一次(指向的是地址)
m=2
def func(x,y,z=m)
print(x,y,z)
m=10
func(1,1)
结果:1,1,2
2. 默认参数的定义应该在位置形参后面
3. 默认参数通常应该定义成不可变类型,如果必须可变,则写 成
def func(x,y,z=None)
if z == None
z=[]
4.可变形参
1.*args:针对溢出的位置实参
多余的参数会被写成元组并存入args
2.**kwargs:针对溢出的关键字实参
多余的参数会被写成字典并存入kwargs
def func(**kwargs):
print(kwargs)
func(a=6,b=3,c=8)
结果:{'a': 6, 'b': 3, 'c': 8}
3.实参前面加*:对列表打散,再传参数
func(*[1,2,3,4]) #相当于func(1,2,3,4)
*字典 = *字典.keys()
实参前面加**:功能一样,但后面只能跟字典
4.*后定义的参数称命名关键字形参,必须被传值(有默认值的除外),且必须按照关键字实参的形式传递
def foo(x,y,*args,a=1,b,**kwargs):
···
foo(1,2,3,4,5,b=3,c=4,d=5)
结果:x=1,y=2,args=(3,4,5),a=1,b=3,kwargs= {'c':4,'d':5}
5.形参参数的优先级:
位置形参,默认形参,*,命名关键字形参,** #依次从左到右
注:
运用切片对字符串和列表进行截取
def func2(seq):
return seq[::2] #顾头不顾尾