• Python OS模块重要知识点


    Python OS模块重要知识点

    这几点很重要,主要是关于文件路径,我之前踩了很多坑,今天总结一下,方便以后能够避免与path相关的各种坑!

    1,首先我们想获取某个文件夹下面的所有文件夹以及文件(包括子文件夹里面的文件) 

    lists = os.listdir( Path )

    2,想获取某个文件夹(Path )下面的所有文件夹以及文件(包括子文件夹里面的文件) 

    def listDir( path ):
        for filename in os.listdir(path):
            pathname = os.path.join(path, filename)
            if (os.path.isfile(filename)):
                print pathname
            else:
                listDir(pathname)

    3,获取上级目录文件夹:

    C:	est
        getpath.py
        sub
             sub_path.py

    比如在 sub_path.py 文件里面的这一句代码  os.path.abspath(os.path.dirname(__file__))  可以获取 sub 目录的绝对路径

    比如在 sub_path.py 文件里面的这一句代码  os.path.abspath(os.path.dirname(os.path.dirname(__file__)))  可以获取 est 目录的绝对路径

    4,获取当前目录及上级目录

    └── folder
        ├── data
        │   └── data.txt
        └── test
            └── test.py
    print '***获取当前目录***'
    print os.getcwd()
    print os.path.abspath(os.path.dirname(__file__))
    
    print '***获取上级目录***'
    print os.path.abspath(os.path.dirname(os.path.dirname(__file__)))
    print os.path.abspath(os.path.dirname(os.getcwd()))
    print os.path.abspath(os.path.join(os.getcwd(), ".."))
    
    print '***获取上上级目录***'
    print os.path.abspath(os.path.join(os.getcwd(), "../.."))
    
    
    ***获取当前目录***
    /workspace/demo/folder/test
    /workspace/demo/folder/test
    
    ***获取上级目录***
    /workspace/demo/folder
    /workspace/demo/folder
    /workspace/demo/folder
    
    ***获取上上级目录***
    /workspace/demo

    此外:

    #curdir  表示当前文件夹
    print(os.curdir)
    
    #pardir  表示上一层文件夹
    print(os.pardir)

    5,调用其他目录的文件时,如何获取被调用文件的路径

    C:	est
        getpath.py
        sub
             sub_path.py

    比如C: est目录下还有一个名为sub的目录;C: est目录下有getpath.py,sub目录下有sub_path.py,getpath.py调用sub_path.py;我们在C: est下执行getpath.py。

    如果我们在sub_path.py里面使用sys.path[0],那么其实得到的是getpath.py所在的目录路径“C: est”,因为Python虚拟机是从getpath.py开始执行的。

    如果想得到sub_path.py的路径,那么得这样:

    os.path.split(os.path.realpath(__file__))[0]

    其中__file__虽然是所在.py文件的完整路径,但是这个变量有时候返回相对路径,有时候返回绝对路径,因此还要用os.path.realpath()函数来处理一下。

    也即在这个例子里,os.path.realpath(__file__)输出是“C: estsubsub_path.py”,而os.path.split(os.path.realpath(__file__))[0]输出才是“C: estsub”。

    总之,举例来讲,os.getcwd()、sys.path[0] (sys.argv[0])和__file__的区别是这样的:

    假设目录结构是:

     C:	est
      |
      [dir] getpath
        |
        [file] path.py
        [dir] sub
          |
          [file] sub_path.py
    

    然后我们在C: est下面执行python getpath/path.py,这时sub_path.py里面与各种用法对应的值其实是:

    os.getcwd() “C: est”,取的是起始执行目录

    sys.path[0]或sys.argv[0] “C: estgetpath”,取的是被初始执行的脚本的所在目录

    os.path.split(os.path.realpath(__file__))[0] “C: estgetpathsub”,取的是__file__所在文件sub_path.py的所在目录



  • 相关阅读:
    C语言程序设计第一次作业
    C语言I博客作业09
    C语言I博客作业08
    C语言I博客作业07
    C语言I博客作业06
    C语言I博客作业05
    C语言II博客作业03
    C语言II博客作业02
    C语言II博客作业01
    学期总结
  • 原文地址:https://www.cnblogs.com/111testing/p/9589323.html
Copyright © 2020-2023  润新知