• day5模块学习 -- os模块学习


    python基础之模块之os模块

    os模块

    os模块的作用:

        os,语义为操作系统,所以肯定就是操作系统相关的功能了,可以处理文件和目录这些我们日常手动需要做的操作,就比如说:显示当前目录下所有文件/删除某个文件/获取文件大小……

        另外,os模块不受平台限制,也就是说:当我们要在linux中显示当前命令时就要用到pwd命令,而Windows中cmd命令行下就要用到这个,额...我擦,我还真不知道,(甭管怎么着,肯定不是pwd),这时候我们使用python中os模块的os.path.abspath(name)功能,甭管是linux或者Windows都可以获取当前的绝对路径。

        os模块的常用功能:

        1  os.name      #显示当前使用的平台

        >>> import os
      >>> os.name
      'posix'           #表示linux
        >>> os.name

        'nt'             #表示windows

        2  os.getcwd()      #显示当前python脚本工作路径

        >>> os.getcwd()
      '/home/zhuzhu'     #获取当前脚本所在的路径


        3.os.chdir()         #修改文件路径

        >>> os.getcwd()
      '/home/zhuzhu'              #文件当前路径是:'/home/zhuzhu'
      >>> os.chdir("/home")       #我们使用chdir()来修改文件路径,修改成"/home"
      >>> os.getcwd()
      '/home'                    #可以看出,修改文件路径成功了


        4.os.curdir                #返回当前目录,是一个属性,而不是一个方法

        >>> os.curdir
      '.'                       #"."表示当前目录
      >>> os.getcwd()
      '/home'

        5.os.pardir              #返回上一级目录,获取当前目录的父目录字符串名:('..')

        >>> os.pardir
      '..'          #".."代表当前目录的子目录

        6.os.makedir("dirname1/dirname2")     #可生成多层递归目录,就是递归的创建文件目录

        下面,我们在当前目录下创建一个文件夹   

        os.makedirs("/home/zhuzhu/geng/alex")

        os.makedirs()在文件/home/zhuzhu下创建了geng目录,在geng目录下创建了文件alex,如下,下面我们来看看是否创建成功:

        zhuzhu@zhuzhu-K53SJ:~$ ls /home/zhuzhu
      ATM         day6                            random           title4  视频
      Credit      day7                            shopping_center  title5  图片
      CreditCard  examples.desktop                sorted           title6  文档
      day1        geng                            title10          title7  下载
      day2        java_error_in_PYCHARM_2297.log  title11          title8  音乐
      day3        learning_log                    title15          title9  桌面
      day4        pycharm-2016.3.3                title16          第五天  作业
      day4.0      pygame                          title2           公共的  作业汇总
      day5        《Python编程》源代码文件        title3           模板
        从上面可以看出,文件geng创建成功,下面来看看alex是否创建成功:

        zhuzhu@zhuzhu-K53SJ:~$ ls /home/zhuzhu/geng
      alex

        可以看出,目录alex也创建成功了。

        7.os.removedirs("dirname1")     #若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推

        os.removedirs()是删除空的目录,递归的删除目录

        上面我们创建了一个/home/zhuzhu/geng/alex,后面两个目录都为空,那么使用os.removedirs()看是否能够删除成功。

        >>> os.removedirs("/home/zhuzhu/geng/alex")     #删除目录alex,如果geng为空,也删除,依次类推。

        zhuzhu@zhuzhu-K53SJ:~$ ls
      ATM         day6                            shopping_center  title5  图片
      Credit      day7                            sorted           title6  文档
      CreditCard  examples.desktop                title10          title7  下载
      day1        java_error_in_PYCHARM_2297.log  title11          title8  音乐
      day2        learning_log                    title15          title9  桌面
      day3        pycharm-2016.3.3                title16          第五天  作业
      day4        pygame                          title2           公共的  作业汇总
      day4.0      《Python编程》源代码文件        title3           模板
      day5        random                          title4           视频
        可以看出,geng目录已经删除成功了

        zhuzhu@zhuzhu-K53SJ:~$ ls /home/zhuzhu/geng
      ls: 无法访问'/home/zhuzhu/geng': 没有那个文件或目录

        系统里面也没有/home/zhuzhu/geng这个文件目录了

        8.os.mkdir("dirname")      #生成单级目录;只能一层一层创建,不能像makedirs()递归的创建

        >>> os.mkdir("/home/zhuzhu/geng/alex")
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      FileNotFoundError: [Errno 2] No such file or directory: '/home/zhuzhu/geng/alex'
      >>> os.mkdir("/home/zhuzhu/geng")
      >>> os.mkdir("/home/zhuzhu/geng/alex")

        上面,我们使用mkdir("/home/zhuzhu/geng/alex")进行目录创建,系统报错,找不到文件路径/home/zhuzhu/geng,在下面我们先创建geng,然后创建alex就可以,mkdir()是一层一层创建文件目录,如果上一层文件目录不存在,在会报错。

        9.rmdir("dirname")    #删除当即空目录,若目录不为空则无法删除,报错;

        10.os.listdir("dirname")    #列出指定目录下的所有文件和子目录,包含隐藏文件,并以列表方式打印

        os.listdir("dirname")   以列表的形式显示当前文件下所有的文件和子目录,如下:

        >>> os.listdir(".")     #当前文件的子目录
      ['.compiz', '.profile', 'day5', 'examples.desktop', '.bashrc', 'title10', '.config', 'title8', 'title15', 'title16',        'java_error_in_PYCHARM_2297.log', '.sunpinyin', 'sorted', '.java', '.mozilla', 'shopping_center', '.gnupg', '.gphoto', '音乐',   'pygame', '作业', 'day7', '.cache', '.pki', 'title11', 'day6', '作业汇总', 'title4', 'title3', '.sogouinput', 'title2',       'CreditCard', 'day1', '.bash_logout', 'title6', 'random', '.xinputrc', '.ICEauthority', 'title7', 'day4', '.gnome', '.local', '  文档', '公共的', '.xsession-errors', '视频', '桌面', '.bash_history', '.xsession-errors.old', '.Xauthority', '《Python编程》源代  码文件', 'day3', '图片', 'Credit', '.dbus', 'pycharm-2016.3.3', '.python_history', 'day2', '第五天', 'ATM', '.PyCharm2016.3',   '.gconf', 'title5', '下载', '.mysql_history', 'learning_log', '模板', 'title9', '.sudo_as_admin_successful', 'day4.0', '.presage']
      >>> os.listdir("..")    #上一级文件的子目录
      ['zhuzhu']

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

        下面,我们来看一个例子:

        >>> os.mkdir("/home/zhuzhu/geng")      #首先创建一个geng的目录,并且在里面添加内容

        >>> os.rmdir("/home/zhuzhu/geng")      #添加内容之后,我们来删除geng文件
      Traceback (most recent call last):
        File "<stdin>", line 1, in <module>
      OSError: [Errno 39] Directory not empty: '/home/zhuzhu/geng'

        删除的时候,报错了,提示说文件不是空,不能删除,现在我们使用os.remove("dirname")来进行删除尝试:

        >>> os.remove("/home/zhuzhu/geng")
      Traceback (most recent call last):
         File "<stdin>", line 1, in <module>
      IsADirectoryError: [Errno 21] Is a directory: '/home/zhuzhu/geng'
      >>> os.remove("/home/zhuzhu/geng/alex")     #删除成功,删除geng文件夹下面的文件alex,从上面例子中我们可以看出,removedirs()是递归的删除文件夹,rmdir()是删除单层文件夹,如果文件夹里面有内容(即便里面的文件是空的,也是不能删除的),是不能删除的。而remove()是删除文件夹里面的文件。

        12.os.remove()        #重命名文件/目录

        >>> os.mkdir("/home/zhuzhu/geng")        #创建一个文件夹
      >>> os.rename("/home/zhuzhu/geng","/home/zhuzhu/alexsb")     #修改这个文件夹的名字,可以看出,修改成功了

        os.remove()是重命名文件夹的,不能修改文件的名字

        13.os.stat("path/filename")      #获取文件/目录信息

        >>> os.listdir()       #获取当前文件下的文件/目录信息
      ['.compiz', '.profile', 'day5', 'examples.desktop', '.bashrc', 'title10', '.config', 'title8', 'title15', 'title16',       'java_error_in_PYCHARM_2297.log', '.sunpinyin', 'sorted', '.java', '.mozilla', 'shopping_center', '.gnupg', '.gphoto', '音乐',   'pygame', '作业', 'day7', '.cache', '.pki', 'title11', 'day6', '作业汇总', 'title4', 'title3', '.sogouinput', 'title2',       'CreditCard', 'day1', '.bash_logout', 'title6', 'random', '.xinputrc', '.ICEauthority', 'title7', 'day4', '.gnome', '.local', '文  档', '公共的', '.xsession-errors', '视频', '桌面', '.bash_history', '.xsession-errors.old', '.Xauthority', '《Python编程》源代码  文件', 'day3', '图片', 'Credit', '.dbus', 'pycharm-2016.3.3', '.python_history', 'day2', '第五天', 'ATM', '.PyCharm2016.3',     '.gconf', 'title5', '下载', '.mysql_history', 'learning_log', '模板', 'title9', '.sudo_as_admin_successful', 'day4.0',       '.presage']
      >>> os.stat("day5")    #获取文件的信息
      os.stat_result(st_mode=16893, st_ino=17302706, st_dev=64768, st_nlink=4, st_uid=1000, st_gid=1000, st_size=4096,           st_atime=1500590962, st_mtime=1496033312, st_ctime=1496033312)

        可以看出,os.stat("dirname")是获取文件的信息,st_size大小,创建时间等等信息。

        14.os.sep     #输出操作系统特定路径分隔符,win下为"\",Linux下为"/"

        >>> import os      #输出操作系统特定路径分隔符,Windows下为"\",Linux下为"/"
      >>> os.sep
      '/'               #从输出可以看出,使用的是Linux操作系统

        15.os.linesep     #输出当前平台使用的行终止符,Windows下为" ",Linux下为" "

        平台使用的行终止符,Windows下为" ",Linux下为" ",下面来看看当前电脑的行终止符。

        >>> os.linesep       #查看当前平台使用的行终止符,Windows下为" ",Linux下为" "
      ' '    

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

        >>> os.pathsep
      ':'

        17.os.system("bash command")      #运行shell命令,直接显示

        >>> os.system("dir")      #运行系统命令
      ATM        day6                shopping_center  title5  图片
      Credit        day7                sorted         title6  文档
      CreditCard  examples.desktop            title10         title7  下载
      day1        java_error_in_PYCHARM_2297.log  title11         title8  音乐
      day2        learning_log            title15         title9  桌面
      day3        pycharm-2016.3.3            title16         第五天  作业
      day4        pygame                title2         公共的  作业汇总
      day4.0        《Python编程》源代码文件        title3         模板
      day5        random                title4         视频

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

        os.environ是获取系统环境变量,输入可以显示系统的环境变量

        19.os.path.abspath(path)      #返回path规范化的绝对路径

        >>> os.path.abspath("/home/zhuzhu")
      '/home/zhuzhu'

        20.os.path.split(path)     #将path分割成目录和文件名二元组返回

        >>> os.path.split("/home/zhuzhu/a.txt")
      ('/home/zhuzhu', 'a.txt')

        21.os.path.dirname(path)    #返回path的目录。其实就是os.path.split(path)的第一个元素

        >>> os.path.dirname("/home/zhuzhu/a.txt")
      '/home/zhuzhu'
      >>> os.path.dirname("/home/zhuzhu")
      '/home'

        22.os.path.basename(path)    #提取文件最后一个名字,即os.path.split(path)的第二个元素

        >>> os.path.basename("/home/zhuzhu/alex.txt")
      'alex.txt'
      >>> os.path.basename("/home/zhuzhu")
      'zhuzhu'

        23.os.path.exists(path)     #如果path存在,返回True;如果path不存在,返回False

        >>> os.path.exists("/home/zhuzhu/alexsb.txt")
      False
      >>> os.path.exists("/home/zhuzhu")
      True

        从上面可以看出,os.path.exists(path)是用来判断文件是否存在,如果path存在,则返回True;否则返回False

        24.os.path.isabs(path)    #如果path是绝对路径,返回True

        Linux系统中,以"/"开头的就是绝地路径,否则就是相对路径

        >>> os.path.isabs("/home/zhuzhu")
      True
      >>> os.path.isabs("/zhuzhu")
      True
      >>> os.path.isabs("zhuzhu")
      False

        os.path.isabs(path)判断文件路径是否是绝对路径,Linux系统中,只要是以"/"开头就是绝对路径,Windows"C:"等开头是绝对路径,即从根目录开始就是绝对路径,不管文件是否存在。

        25.os.path.isfile(path)      #如果path是一个存在的文件,返回True;否则返回False

        >>> os.path.isfile("/home/zhuzhu/alex.txt")
      True
      >>> os.path.isfile("/home/zhuzhu")
      False
        os.path.isfile(path)是判断一个文件是否存在,如果path是一个文件夹或者不存在,就会返回错误,其实就是判断一个文件是否存在。

        26.os.path.isdir(path)     如果paht是一个存在的目录,则返回True。否则返回False

        >>> os.path.isdir("/home/zhuzhu")
      True
      >>> os.path.isdir("/home/zhuzhu/alex.txt")
      False

        os.path.isfile(path)是判断一个文件是否存在,而os.path.sidir(path)是判断一个目录是否存在,两者是不一样的,一个是文件,一个是目录。

        27.os.path.join(path1,path2,path3)   #将多个文件路径组合后返回,第一个绝对路径之前的参数将被忽略

        >>> os.path.join("/home","zhuzhu")
      '/home/zhuzhu'
      >>> os.path.join("/home","zhuzhu","alex.txt")
      '/home/zhuzhu/alex.txt'

        28.os.path.getatime(path)    #返回path所指向的文件或者目录最后存取时间  (getatime = get access time最后存取时间)

        >>> os.path.getatime("/home/zhuzhu/alex.txt")
      1500730373.8242517

        29.os.path.getmtime(path)   #返回path所有指向的文件或者目录的最后修改时间  (getmtime = get modify time最后修改时间)

        >>> os.path.getmtime("/home/zhuzhu/alex.txt")
      1500730373.8242517

  • 相关阅读:
    OS + Multipass
    服务器间文件实时双向同步(rsync+inotify)
    全链路追踪 & 性能监控工具 SkyWalking 实战
    TCP Dup ACK linux kernel 3.2
    Ns3.35 errata Compilation on Python 3.10 systems
    LeetCode 108. Convert Sorted Array to Binary Search Tree
    LeetCode 98. Validate Binary Search Tree
    LeetCode 701. Insert into a Binary Search Tree
    LeetCode 235. Lowest Common Ancestor of a Binary Search Tree
    LeetCode 783. Minimum Distance Between BST Nodes
  • 原文地址:https://www.cnblogs.com/gengcx/p/7215748.html
Copyright © 2020-2023  润新知