Python学习笔记之 os模块 & 递归函数 & 栈 & 队列
# 获取操作系统类型 nt->windows posix->Linux,Unix或者 Mac OS X
print(os.name)
# 打印操作系统详细的信息 注意:windows不支持
#print(os.uname())
'''
posix.uname_result(sysname='Linux', nodename='www.yj.user', release='3.10.0-514.26.2.el7.x86_64', version='#1 SMP Tue Jul 4 15:04:05 UTC 2017', machine='x86_64')
'''
# 获取操作系统中的环境变量
print(os.environ)
# 获取指定环境变量
print(os.environ.get("ALLUSERSPROFILE"))
# 获取当前目录
print(os.curdir)
# 获取当前工作目录,即当前python脚本所在的目录
print(os.getcwd())
# 以列表的形式返回指定目录下的所有的文件
print(os.listdir())
# 在当前目录下创建新目录
os.mkdir("lee") #也可以写绝对路径
os.mkdir(r"C:\Users\yanji\Desktop\lee")
# 删除目录
os.rmdir("lee")
os.rmdir(r"C:\Users\yanji\Desktop\lee")
# 获取文件属性
print(os.stat("lee"))
# 重命名
os.rename("lee","li")
# 删除普通文件
os.remove("test11")
# 运行shell命令
os.system("notepad")
os.system("write")
os.system("mspaint")
os.system("msconfig")
os.system("shutdown -s -t 500")
os.system("shutdown -a")
os.system("taskkill /f /im notepad.exe")
- 有些方法存在os模块里,还有些存在于os.path
# 查看当前的绝对路径
print(os.path.abspath("."))
# 拼接路径
# 注意:参数2里开始不要有斜杠
path1 = r"C:\Users\yanji\Desktop\day7"
path2 = "sunck"
print(os.path.join(path1,path2))
path3 = "/root/lee/home"
path4 = "lee"
print(os.path.join(path3,path4))
# 拆分路径
path5 = r"C:\Users\yanji\Desktop\day7\leee.txt"
print(os.path.split(path5))
# 获取扩展名
path6 = r"C:\Users\yanji\Desktop\day7\leee.txt"
print(os.path.splitext(path6))
# 判断是否是目录(是返回True,否返回False)
path7 = r"C:\Users\yanji\Desktop\day7"
print(os.path.isdir(path7))
# 判断文件是否存在
path8 = r"C:\Users\yanji\Desktop\day7\file1.txt"
print(os.path.isfile(path8))
# 判断目录是否存在
path9 = r"C:\Users\yanji\Desktop\day7"
print(os.path.exists(path9))
# 获取文件大小(字节)
path10 = r"C:\Users\yanji\Desktop\day7\file1.txt"
print(os.path.getsize(path10))
# 文件的目录
path11 = r"C:\Users\yanji\Desktop\day7\file1.txt"
print(os.path.dirname(path11))
print(os.path.basename(path11))
# print(os.getcwd()) #查看当前目录
# os.chdir("/tmp") #改变当前目录
# print(os.getcwd())
# print(os.curdir) #打印当前目录.
# print(os.pardir) #打印上级目录..
# print(os.listdir("/")) #列出目录里的文件,结果不是绝对路径
# print(os.stat("/tmp/1.txt")) #得到文件的状态信息
# print(os.path.getsize(__file__)) #得到文件的大小信息,__file__是特殊变量,代表文件本身
#
# print(os.path.abspath(__file__)) #得到文件的绝对路径
# print(os.path.dirname(__file__)) #得到文件的绝对路径的目录名,不包括文件
# print(os.path.basename(__file__)) #得到文件的文件名,不包括目录
# print(os.path.split(__file__)) #把dirname和basename分开
# print(os.path.join("/tmp","1.txt")) #把dirname和basename合并
#
# print(os.path.isfile("/tmp/1.txt")) #判断是否为文件
# print(os.path.isabs("1.txt")) #判断是否为绝对路径
# print(os.path.exists("/tmp/11.txt")) #判断是否存在
# print(os.path.isdir("/tmp/")) #判断是否为目录
# print(os.path.islink("/etc/rc.local"))#判断是否为链接文件
#
# print(os.rename("/tmp/1.txt","/tmp/11.txt")) #改名
# print(os.remove("/tmp/11.txt")) #删除
#
# os.mkdir("/tmp/aaa") #创建目录
# os.rmdir("/tmp/aaa") #删除目录
# os.makedirs("/tmp/a/b/c/d") #连续创建多级目录
# os.removedirs("/tmp/a/b/c/d") #从内到外一级一级的删除空目录,目录非空则不删除
# print(os.popen("ls /test").read()) #相当于os.system("ls /test"),可以读到命令的值
os.system("touch /tmp/1.txt")
os.system("ls -l /tmp/1.txt") #强大的调用shell命令的操作,几乎能调任何命令
递归函数
- 递归调用:一个函数,调用了自身,称为递归调用
- 递归函数:一个会调用自身的函数称为递归函数
凡是循环能干的事,递归都能干
- 编写递归函数的方式:
1、写出临界条件
2、找这一次和上一次的关系
3、假设当前函数已经能用,调用自身计算上一次的结果,再求出本次的结果
需求,输入一个数(大于等于1),求1+2+3+……+n的和
# 普通函数写法:
def sun1(n):
sum = 0
for x in range(1,n + 1):
sum += x
return sum
# 递归来写
'''
1+2+3+4+5
sum2(1) + 0 = sum2(1)
sum2(1) + 2 = sum2(2)
sum2(2) + 3 = sum2(3)
sum2(3) + 4 = sum2(4)
sum2(4) + 5 = sum2(5)
5 + sum2(4)
5 + 4 + sum2(3)
5 + 4 + 3 + sum2(2)
5 + 4 + 3 + 2 + sum2(1)
5 + 4 + 3 + 2 + 1
'''
def sum2(n):
if n == 1:
return 1
else:
return n * sum2(n - 1)
res = sum2(5)
print(res)
栈
模拟栈结构
'''
stack = []
stack.append("A")
print(stack)
stack.append("B")
print(stack)
stack.append("C")
print(stack)
# 出栈(在栈里取数据)
res1 = stack.pop()
print("res =",res1)
print(stack)
res2 = stack.pop()
print("res =",res2)
print(stack)
res3 = stack.pop()
print("res =",res3)
print(stack)
队列
- 队列:先进先出
import collections
import collections
# 创建一个队列
queue = collections.deque()
print(queue)
print(type(queue))
# 进队(存数据)
queue.append("A")
print(queue)
queue.append("B")
print(queue)
queue.append("C")
print(queue)
# 出对(取数据)
res1 = queue.popleft()
print("res1 =", res1)
print(queue)
res2 = queue.popleft()
print("res2 =", res2)
print(queue)
res3 = queue.popleft()
print("res2 =",res3)
print(queue)
网友评论