• os、sys和shutil模块


    运行环境:python3

    OS模块:os 模块提供了一个统一的操作系统的接口函数

    下面的path指路径的意思

    os.stat(file) #查询文件属性操作

    os.sep #取代操作系统特定的路径分隔符

    os.pathsep #输出用于分割文件路径的字符串

    os.linesep#给出当前平台的行终止符。例如,Windows使用' ',Linux使用' '而Mac使用' '

    os.name #获取当前用的平台,nt代表windows,posix代表linux

    os.getcwd())#得到当前工作目录,即当前Python脚本工作的目录路径

    os.listdir(path) #获取目录下的所有文件和文件夹,不加参数默认为当前目录

    os.mkdir(path) #创建单级目录,如果目录存在则报错

    os.makedirs(path) #创建多级目录,可以生成多层递归目录,如果目录存在则报错

    os.rmdir(path) #删除一个目录,注意目录下必须为空,有文件则报错

    os.removedirs(path) #删除多级目录,可以删除多层递归的空目录,注意目录下必须为空,有文件则报错

    os.remove(path)#删除一个文件

    os.rename(src,dst) #文件重命名,注意dst(要修改的文件名)必须不存在。

    print(__file__) #获取当前文件的相对路径

    os.chdir() #改变目录

    os.system()#运行shell命令

    os.getenv()os.putenv()#分别用来读取和设置环境变量 os.putenv('PATH',BaseDir)  os.getenv('PATH')

     os.environ() #获取系统环境变量

    os.walk(path):生成目录树下的所有文件名

    如:

    print(os.walk('c:'+os.sep+'python35'))  #迭代器

    for i in os.walk('c:'+os.sep+'python35'):

       print(i)

    ->打印c:python35下的所有文件

    os.chdir("dirname")  改变当前脚本工作目录;相当于shell下cd

    os.curdir  返回当前目录: ('.')

    os.pardir  获取当前目录的父目录字符串名:('..')

    os.path模块

    下面的path指路径的意思

     os.path.split(path):以元组的形式分割文件名与目录(如果你完全使用目录,它也会将最后一个目录作为文件名而分离,同时它不会判断文件或目录是否存在)

    os.path.join(path):连接目录与文件名,不会判断文件或目录是否存在

    print(os.path.abspath(__file__)):获取绝对路径

    os.path.dirname(path):返回path的上一级,相当于os.path.split(path)[0]

    os.path.basename(path):返回文件名或者目录名,相当于os.path.split(path)[1]

    os.path.getsize(path):获得文件大小

    os.path.isfile(path):判断路径是不是一个文件,这里path可以是字节形式的。

    print(os.path.isfile(b'server.py'))
    print(os.path.isfile('server.py'))
    两者都是True

    os.path.isdir(path):判断路径是不是一个目录

    os.path.isabs(path):判断路径是否为绝对路径

    os.path.exists(path):判断路径是否存在

    os.path.getatime(path):返回path所指向的文件或者目录的最后存取时间

     os.path.getmtime(path):返回path所指向的文件或者目录的最后修改时间

    更多参考:https://docs.python.org/2/library/os.html?highlight=os#module-os

    sys模块

    sys.argv:实现从程序外部向程序传递参数

    sys.exit():程序中间的退出

    sys.getdefaultencoding():获取系统当前编码,python3:utf8,python2:ascii

    sys.path:获取环境变量的列表集合,如需在不同目录下调用模块,可用该方法。

    例子:在不同文件下互相调用模块

    如主文件在day2下,现在我们要调用day1的模块,那我们就得得到day的路径并且加入到环境变量中如下。

    base_dir = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) #得到当前文件的上上一级目录

    sys.path.append(base_dir)   #添加到环境变量

    sys.stdinstdoutstderr  # stdin , stdout , 以及stderr 变量包含与标准I/O 流对应的流对象. 如果需要更好地控制输出,而print 不能满足你的要求, 它们就是你所需要的. 你也可以替换它们, 这时候你就可以重定向输出和输入到其它设备( device ), 或者以非标准的方式处理它们

    sys.platform      # 返回操作系统平台名称

    sys.version      #获取Python解释程序的版本信息

    更多参考:https://docs.python.org/2/library/sys.html?highlight=sys#module-sys

    shutil模块

    高级的文件、文件夹、压缩包处理模块

    # f = open('shutil_text')
    # f2 = open('shutil_new','w')
    # shutil.copyfileobj(f,f2) #将文件内容拷贝到另一个文件中,可以部分内容,要打开文件才能拷贝文件


    #shutil.copy('shutil_text',r'shutil_text') #拷贝文件和权限
    """如果目的路径是一个目录,那就把源文件的文件名作为文件名拷贝到目的路径下,
    如果目的路径存在且不是一个目录,如果文件存在,则拷贝到该文件下,文件不存在,则创建文件并拷贝内容至该文件
    如果目录不存在,则报错
    如果两个是相同路径且相同的文件名,则报SameFileError错误
    """
    #shutil.copy2(src,dst) #拷贝文件和状态信息
    #shutil.copyfile(src,dst) #拷贝文件
    #shutil.copymode(src,dst) #仅拷贝权限。内容、组、用户均不变
    #shutil.copystat(src,dst) #拷贝状态的信息,包括:mode bits, atime, mtime, flags

    #shutil.copytree(r'c:luxj',r'd:lxj ext1') #递归的去拷贝文件
    #shutil.rmtree(path) #递归的去删除文件

    #shutil.move(r'c:luxj',r'd:lxj ext1') #递归的去移动文件

    shutil.make_archive(base_name, format,...)

    创建压缩包并返回文件路径,例如:zip(压缩)、tar(只打包)

      • base_name: 压缩包的文件名,也可以是压缩包的路径。只是文件名时,则保存至当前目录,否则保存至指定路径,
        如:www                        =>保存至当前路径
        如:/Users/wupeiqi/www =>保存至/Users/wupeiqi/
      • format: 压缩包种类,“zip”, “tar”, “bztar”,“gztar”
      • root_dir: 要压缩的文件夹路径(默认当前目录)
      • owner: 用户,默认当前用户
      • group: 组,默认当前组
      • logger: 用于记录日志,通常是logging.Logger对象

    如:shutil.make_archive(r'c:aaaaa','zip',r'd:lxj ext1')

    shutil.make_archive(r'c:aaaa','tar',r'd:lxj ext1')  #试了下只能压缩目录,不能压缩单个文件

     shutil 对压缩包的处理是调用 ZipFile 和 TarFile 两个模块来进行的,详细:

    import zipfile

    压缩

    # z = zipfile.ZipFile(r"c:aaaaa.zip",'a') #目前只能解决压缩单个文件,压缩目录可用shutil.make_archive
    # z.write('shutil_new') #这里取决你选取的模式,如果是w,清空再压缩至该文件,如果是a则追加
    # z.close()
    解压

    z = zipfile.ZipFile(r"c:aaaaa.zip",'r')
    z.extractall('c:')
    z.close()


    import tarfile
    压缩
    # tar = tarfile.open(r"c:your.tar",'w')
    # tar.add(r"d:lxj ext1",arcname='sx') #加上arcname可以压缩目录
    # tar.close()

    解压
    tar = tarfile.open('c:your.tar','r')
    tar.extractall('c:') # 可设置解压地址
    tar.close()


  • 相关阅读:
    IPV6地址分类链路本地地址和全球单播地址
    文件组与表分区
    网络负载均衡
    debian 11中安装Mongodb4.4.14
    在Vim编辑器中查找选定文本
    nvm的下载安装
    nvm use时报错 exit status 1:一堆乱码,exit status 5
    axios请求本地文件404
    使用yarn启用项目,报错无法加载文件 C:\Users\Administrator\AppData\Roaming\npm\yarn.ps1,因为在此系 统上禁止运行脚本。有关详细信息,请参阅 https:/go.microsoft.com/fwlink/?LinkID=135170 中的 about_Execution_Policies。
    【服务器数据恢复】RAID5无法识别的数据恢复案例
  • 原文地址:https://www.cnblogs.com/zj-luxj/p/6849255.html
Copyright © 2020-2023  润新知