美文网首页
Python ☞ day 6

Python ☞ day 6

作者: 浪子彦卿L | 来源:发表于2018-05-06 16:32 被阅读0次

    Python学习笔记之 os模块 & 递归函数 & 栈 & 队列

    • 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))
    
    • os模块实例
      1、 列出当前目录下的所有目录
      [x for x in os.listdir('.') if os.path.isdir(x)]    
      
      2、列出当前目录下的所有的.py文件,也只需一行代码
      [x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py']
      
    # 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)
    

    相关文章

      网友评论

          本文标题:Python ☞ day 6

          本文链接:https://www.haomeiwen.com/subject/spyurftx.html