zoukankan      html  css  js  c++  java
  • 洗礼灵魂,修炼python(17)--跨平台操作三剑客—os,os.path.sys模块

    os

    1.作用:

    因为客户基本都是使用不同的操作系统,在不同的系统下,要完成一个项目,那必须跨平台操作,而python本来就是一个跨平台的语言,而有了os模块,则不需要在意什么系统。并且os模块是用于文件/目录的操作,在很多时候,我们需要对磁盘上的目录或者文件进行操作,如果手动操作那么就已经违背我们的宗旨了,要开发就整个过程都开发,整个过程都自动化完成,所以,os模块在这里作用很大

    2.函数:

    老规矩,还是只讲解常用函数:

     os.listdir(dirname):列出dirname下的目录和文件


    getcwd():获得当前工作目录


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


    chdir(dirname):改变工作目录到dirname


    mkdir(path):创建单层目录,如该目录已存在抛出异常


    makedirs(path):递归创建多层目录,如该目录已存在抛出异常,注意:'E:\a\b'和'E:\a\c'并不会冲突

    • 注意:windows分隔符是双斜线,这个没办法改,Windows就是这么特殊

    remove(path):删除文件

    1).事先创建一个文件:

    2).使用命令:

    3).查看:


    rmdir(path):删除单层目录,如该目录非空则抛出异常


    removedirs(path):递归删除目录,从子目录到父目录逐层尝试删除,遇到目录非空则抛出异常

     


    rename(old, new):将文件old重命名为new


    system(command):运行系统的shell命令

    把弹出cmd窗口手动关闭即可退出
    walk(top, topdown=True, onerror=None, followlinks=False):遍历top路径以下所有的子目录,返回一个三元组:(路径, [包含目录], [包含文件])

    • top -- 根目录下的每一个文件夹(包含它自己), 产生3-元组 (dirpath, dirnames, filenames)【文件夹路径, 文件夹名字, 文件名】。

    • topdown --可选,为True或者没有指定, 一个目录的的3-元组将比它的任何子文件夹的3-元组先产生 (目录自上而下)。如果topdown为 False, 一个目录的3-元组将比它的任何子文件夹的3-元组后产生 (目录自下而上)。

    • onerror -- 可选,是一个函数; 它调用时有一个参数, 一个OSError实例。报告这错误后,继续walk,或者抛出exception终止walk。

    • followlinks -- 设置为 true,则通过软链接访问目录

    注意:

    1.walk是一个生成器

    2.必须遵循walk的参数才可以迭代出来

     例:

    但是里面明明是有文件和文件夹的对吧?这里留个疑问,自行解决


    下面的命令支持所有平台,前面已经介绍过,这里单独拿出来提醒一下:


    os.curdir:指代当前目录('.')
    os.pardir:指代上一级目录('..')
    os.sep:输出操作系统特定的路径分隔符(Win下为'\',Linux下为'/')
    os.linesep:当前平台使用的行终止符(Win下为' ',Linux下为' ')
    os.name:指代当前使用的操作系统(包括:'posix',  'nt', 'mac', 'os2', 'ce', 'java')

    os.path

     1.作用:

    os.path模块(不属于os模块,另一个模块,但导入os模块时,os.path模块也被导入进来了,导入os.path,os模块下的函数也可以使用),os和os.path模块结合使用的话很强大

    2.函数:

    同样的,还是只讲解常用方法:

    basename(path):去掉目录路径,单独返回文件名

    dirname(path):去掉文件名,单独返回目录路径

    join(path1[, path2[, ...]]):将path1, path2各部分组合成一个路径名

    split(path):分割文件名与路径,返回(f_path, f_name)元组。如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在

    splitext(path):分离文件名与扩展名,返回(f_name, f_extension)元组
    • 如果是文件则第二个参数为空
    getsize(file):返回指定文件的尺寸,单位是字节,如果file是目录则返回0
    getatime(file):返回指定文件最近的访问时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)

    getctime(file):返回指定文件的创建时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
     
     

    getmtime(file):返回指定文件最新的修改时间(浮点型秒数,可用time模块的gmtime()或localtime()函数换算)
     
     normpath(path):规范path字符串形式
    • 有没有觉得这个方法倒还挺有用的?
    以下为函数返回 True 或 False,这些比较简答,我就不解析了
    exists(path):判断指定路径(目录或文件)是否存在

    isabs(path):判断指定路径是否为绝对路径
     
    isdir(path):判断指定路径是否存在且是一个目录

    isfile(path):判断指定路径是否存在且是一个文件

    islink(path):判断指定路径是否存在且是一个符号链接

    ismount(path):判断指定路径是否存在且是一个挂载点

    samefile(path1, paht2):判断path1和path2两个路径是否指向同一个文件

    sys

    1.作用:

    sys模块包含了跟python解析器和环境相关的变量和函数,可以修改一些系统配置

    2.函数:

    同样的,只讲解常用的函数:

    sys.argv:可以得到命令行参数,实现从程序外部向程序传递参数

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

    • sys.stdin:文件标准输入
    • sys.stdout:文件标准输出
    • sys.stderr:文件标准错误

    sys.platform:获取当前执行环境的平台

    sys.path:path是一个目录列表,供Python从中查找第三方扩展模块。在python启动时,根据内建规则、PYTHONPATH变量进行初始化,或者另一个说法:获取指定模块搜索路径的字符串集合,可以将写好的模块放在得到的某个路径下(使用sys.paht.append(sub)),就可以在程序中import时正确找到

    • 当你使用括号后提示这个错误时,那此方法则不能用括号实例化调用的,直接使用即可
    • 导入操作时,默认只在父路径下(即包的路径)的模块内搜索导入,如果需要导入一个其他包的模块,则需要先导入sys模块,添加一个搜索路径即可:

      

    sys.exit(n):退出程序,程序中间的退出,arg=0为正常退出

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

    sys.maxint:最大的Int值

    • 注意没有括号

    sys.getdefaulttencoding():获取系统当前编码,一般默认为ascii

     sys.setdefaultencoding(sub): 设置系统默认编码,执行dir(sys)时不会看到这个方法,在解释器中执行不通过,可以先执行reload(sys),在执行 setdefaultencoding('utf8'),此时将系统默认编码设置为utf8。(见设置系统默认编码 )

    sys.getfilesystemencoding():获取文件系统使用编码方式,Windows下返回'mbcs',mac下返回'utf-8'.

     sys.setrecursionlimit(sub):sub为一个整形数,此法是修改默认的递归深度,在递归那一章会提到,这个方法很实用

  • 相关阅读:
    0MQ手册(给力!)
    Beansdb动态关注
    要成功?每天记得这几点(成功手抄本)
    使用Entity Framework和WCF Ria Services开发SilverLight之7:多个Domain Service间共享Poco实体
    使用Entity Framework和WCF Ria Services开发SilverLight之4:Map之主外键映射
    SilverLight Tip 1 : Validation
    使用Entity Framework和WCF Ria Services开发SilverLight之6:查找指定字段
    SilverLight单元测试1:框架
    MVVM模式之:ViewModel Factory与注入
    MVC TIP5:JQuery AJAX错误捕获
  • 原文地址:https://www.cnblogs.com/Eeyhan/p/7637603.html
Copyright © 2011-2022 走看看