zoukankan      html  css  js  c++  java
  • day18.os模块 对系统进行操作

    一、os操作

    1、system()在python中执行系统命令

    # os.system("ifconfig")
    # os.system("touch 1.txt")
    # os.system("rm -rf 1.txt")

    2、popen() 执行系统命令返回对象,通过read方法读出字符串

    防止字符串乱码,使用popen进行操作

    obj = os.popen("ifconfig") # 显示的时候,按照utf-8进行转换,默认windows是gbk的编码集
    res = obj.read()
    print(res)

    3、listdir() 获取指定文件夹中所有内容的名称列表

    lst = os.listdir(".")  # . 当前目录
    lst = os.listdir("..") # .. 上一级目录
    lst = os.listdir("/home/wangwen/")
    print(lst)

    4、getcwd()  获取当前文件所在的默认路径 (单纯的路径)

    res = os.getcwd()
    print(res)

    5、路径 + 文件 

    print(__file__)

    # python 终端执行报错: 因为__file __显示文件路劲,没有在文件里面执行,直接终端执行肯定报错.

    6、chdir()   修改当前文件工作的默认路径

    os.chdir("/home/kxq/kxq/temp")
    # os.system("mkdir ceshi1")
    os.system("rm -rf ceshi1")

    7、environ   获取或修改环境变量

    print(os.environ)

    二、os和shutil

    1、os

    # os只能对文件进行新建/删除 创建目录 删除目录,不能对文件进行复制/移动操作,故引出shutil
    import os 
    os.chdir("/home/kxq/kxq/temp")
    
    # os -> 新建/删除
    #os.mknod   创建文件
    # os.mknod("1.txt")
    #os.remove  删除文件
    # os.remove("1.txt")
    
    #os.mkdir   创建目录(文件夹)
    # os.mkdir("ceshi100")
    
    #os.rmdir   删除目录(文件夹)
    # os.rmdir("ceshi100")
    
    #os.rename  对文件,目录重命名
    # os.rename("111.txt","123.py")
    
    #os.makedirs   递归创建文件夹
    # os.makedirs("a/b/c/d/e")
    
    #os.removedirs 递归删除文件夹(空文件夹)
    # os.removedirs("a/b/c/d/e")

    2、shutil -> 复制/移动

    1、copyfileobj(fsrc, fdst[, length=16*1024])

    # 复制文件 (length的单位是字符(表达一次读多少字符))
    # 单纯复制文件的内容
    fp1 = open("123.py",mode="r",encoding="utf-8")
    fp2 = open("lianxi1.php",mode="w",encoding="utf-8")
    shutil.copyfileobj(fp1,fp2)

    2、copyfile(src,dst)

    #单纯的仅复制文件内容 , 底层调用了 copyfileobj ***
    shutil.copyfile("lianxi1.php","lianxi2.py")

    3、copymode(src,dst)

    #单纯的仅复制文件权限 , 不包括内容  (虚拟机共享目录都是默认777)
    shutil.copymode("123.py","456.py")
    
    copystat(src,dst)   #复制所有状态信息,包括权限,组,用户,修改时间等,不包括内容 ***
    shutil.copystat("123.py","lianxi2.py")

    4、copy(src,dst)

    #复制文件权限和内容 ***
    shutil.copy("456.py","lianxi3.html")

    5、copy2(src,dst)

    #复制文件权限和内容,还包括权限,组,用户,时间等 ***
    shutil.copy2("456.py","lianxi4.css")

    7、删除/移动(文件和文件夹) ***

    7.1、copytree(src,dst)

    #拷贝文件夹里所有内容(递归拷贝)
    shutil.copytree("lianxi100","lianxi101")

    7.2、rmtree(path)

    #删除当前文件夹及其中所有内容(递归删除)
    shutil.rmtree("lianxi101")

    7.3、move(path1,paht2)

    #移动文件或者文件夹
    shutil.move("lianxi1.php","..") # 移动文件
    shutil.move("lianxi100","../lianxi1000") # 移动并改名;

    三、os path路径模块

    import os

    1、basename() 返回文件名部分 *

    strvar = "/home/kxq/kxq/temp/20200801/1.py"
    res = os.path.basename(strvar)
    print(res) # 1.py

    2、dirname()  返回路径部分 *

    res = os.path.dirname(strvar) 
    print(res) # /home/kxq/kxq/temp/20200801

    3、split() 将路径拆分成单独的文件部分和路径部分 组合成一个元组

    tup = os.path.split(strvar)
    print(tup)

    4、join()  将多个路径和文件组成新的路径 可以自动通过不同的系统加不同的斜杠 

    path1 = "ceshi1"
    path2 = "kxq"
    path3 = "lianxi1.py"
    pathvar = path1 + os.sep + path2 + os.sep + path3
    # pathvar = path1 + "/" + path2 + "/" + path3
    pathvar = os.path.join(path1,path2,path3)
    print(pathvar)

    5、splitext() 将路径分割为后缀和其他部分 (了解)

    strvar = "/home/wangwen/mywork/ceshi110.html"
    res = os.path.splitext(strvar)
    print(res) # ('/home/wangwen/mywork/ceshi110', '.html')

    可以使用split切割出后缀

    lst = strvar.split(".")
    print(lst[-1])

    6、getsize()  获取文件的大小 ***

    res = os.path.getsize("1.py")
    # 文件夹不能计算.
    res = os.path.getsize("os")
    print(res)

    7、isdir()    检测路径是否是一个文件夹 *

    strvar = "/home/kxq/kxq/temp/20200801/kxq"
    res = os.path.isdir(strvar)
    print(res)

    8、isfile()   检测路径是否是一个文件   *

    strvar = "/home/kxq/kxq/temp/20200801/kxq"
    res = os.path.isfile(strvar)
    print(res)

    9、islink()   检测路径数否是一个链接   *

    strvar = "/home/kxq/kxq/temp/20200801/kxq"
    res = os.path.islink(strvar)
    print(res)

    10、stat 文件 查看当前文件的时间属性

    11、getctime、getmtime、getatime

    import time
    #getctime() [windows]文件的创建时间,[linux]权限的改动时间(返回时间戳) *
    res = os.path.getctime("123.py")
    #getmtime() 获取文件最后一次修改时间(返回时间戳) *
    res = os.path.getmtime("123.py")
    #getatime() 获取文件最后一次访问时间(返回时间戳) *
    res = os.path.getatime("123.py")
    
    str_time = time.ctime(res)
    print(str_time)

    12、exists()   检测指定的路径是否存在 *

    strvar =  "/home/wangwen/mywork/wangwen11322132"
    res = os.path.exists(strvar)
    print(res)

    13、isabs()    检测一个路径是否是绝对路径 *

    pathvar = "."
    res = os.path.isabs(pathvar)
    print(res)

    14、abspath()  将相对路径转化为绝对路径 *

    pathnew = os.path.abspath(pathvar)
    print(pathnew)
    
    if not os.path.isabs(pathvar):
        pathnew = os.path.abspath(pathvar)
        print(pathnew)

    15、练习:计算文件夹的大小

    import os
    
    pathvar = "/mnt/hgfs/python31_gx/day19/ceshi100"
    
    # 基本写法
    lst = os.listdir(pathvar)
    print(lst) # ['1.py', '2.py', '3.py', 'ceshi200']
    
    size = 0
    for i in lst:
        # 拼接路径
        pathnew = os.path.join(pathvar,i)
        # 判断是否是文件
        if os.path.isfile(pathnew):
            print(i,"[文件]")
            size += os.path.getsize(pathnew)
            
        # 判断是否是文件夹
        elif os.path.isdir(pathnew):
            print(i,"[文件夹]")
    
    print(size)
    """不确定有多少层级的情况下,使用递归"""
    
    # 递归计算文件夹的大小
    def getallsize(pathvar):
        size = 0
        # 获取当前文件夹中所有内容
        lst = os.listdir(pathvar)
        # 循环列表
        for i in lst:
            # 拼接完整路径
            pathnew = os.path.join(pathvar,i)
            # 判断是否是文件或者文件夹
            if os.path.isfile(pathnew):
                size += os.path.getsize(pathnew)
            elif os.path.isdir(pathnew):
                # 如果是文件夹,继续调用函数.
                size += getallsize(pathnew)
        # 返回最后的结果
        return size
    
    res = getallsize(pathvar)
    print(res)
    计算文件夹的大小

  • 相关阅读:
    TX2 刷机教程
    ROS2 树莓派SBC镜像安装
    OP3 默认ID图
    OP3 镜像恢复
    ROS2 BringUp
    学习笔记3:Linux面试题
    学习笔记2:Linux简单指令
    学习笔记1:Git简单指令
    编程小白入门分享五:Vue的自定义组件
    编程小白入门分享四:Vue的安装及使用快速入门
  • 原文地址:https://www.cnblogs.com/kongxiangqun/p/13417285.html
Copyright © 2011-2022 走看看