美文网首页python测试开发
python中os.getcwd()和os.path.dirna

python中os.getcwd()和os.path.dirna

作者: Leo_0626 | 来源:发表于2017-11-28 15:27 被阅读5次

    转载链接:http://blog.csdn.net/cyjs1988/article/details/77839238

    下午博主更新了一篇讲述获取当前项目路径的博文,然后得到了悠悠校长的指点,又了解了一种新的使用方式,然后自己也去研究了一下这两种方式的不同之处。

    博主目前用的是Python的os.getcwd()方法,但我一位朋友给出的是os.path.dirname(os.path.realpath(file))

    那么,这两种方式到底有什么本质区别?

    博主通过具体的实验来进行解释。

    先给出2个目录的结构:

    (1)PycharmProjects/pythonLearn/dir/dir2/getRootPath.py

    (2)PycharmProjects/pythonLearn/getPath.py

    【1】那我们先看看第一个PycharmProjects/pythonLearn/dir/dir2/getRootPath.py,如下代码:

    [python]

    view plain

    copy

    <embed id="ZeroClipboardMovie_1" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_1" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=1&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

    1. import

      os

    2. def

      getCurPath1():

    3. cur_path = os.path.dirname(os.path.realpath(file))

    4. return

      cur_path

    5. def

      getCurPath2():

    6. cur_path = os.getcwd()

    7. return

      cur_path

    8. print

    (
    
    'func1----'
    
    +getCurPath1())
    
    1. print
    (
    
    'func2----'
    
    +getCurPath2())
    

    我们直接执行该脚本得到的结果如下:

    func1----C:\Users\Administrator\PycharmProjects\PythonLearn\dir\dir2

    func2----C:\Users\Administrator\PycharmProjects\PythonLearn\dir\dir2

    并未看出本质区别,获取的都是当前脚本所在的dir2目录。

    【2】那我们再看看第二个PycharmProjects/pythonLearn/getPath.py,如下代码:

    现在,我们在里面我们引入了PycharmProjects/pythonLearn/dir/dir2/目录下的getRootPath.py模块。

    [python]

    view plain

    copy

    <embed id="ZeroClipboardMovie_2" src="http://static.blog.csdn.net/scripts/ZeroClipboard/ZeroClipboard.swf" loop="false" menu="false" quality="best" bgcolor="#ffffff" width="16" height="16" name="ZeroClipboardMovie_2" align="middle" allowscriptaccess="always" allowfullscreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" flashvars="id=2&width=16&height=16" wmode="transparent" style="box-sizing: border-box;">

    1. from

      dir.dir2

      import

      getRootPath

    2. path1 = getRootPath.getCurPath1()

    3. path2 = getRootPath.getCurPath2()

    直接执行getPath.py文件获取的结果如下:

    func1----C:\Users\Administrator\PycharmProjects\PythonLearn\dir\dir2

    func2----C:\Users\Administrator\PycharmProjects\PythonLearn

    这个时候,你有没有发现有什么不同,这里的func1就是os.path.dirname(os.path.realname(file))获取的file所在

    脚本的路径

    ,也就是getRootPath.py的路径。

    而os.getcwd()获取的 当前最外层调用的脚本路径 ,即getPath所在的目录也可描述为

    起始的执行目录

    ,A调用B,起始的是A,那么获取的就是A所在的目录路径。

    方法补充说明:

    os.path.dirname():去掉脚本的文件名,返回目录。

    os.path.dirname(os,path.realname(file)):指的是,获得你刚才所引用的模块 所在的绝对路径,file为内置属性。

    相关文章

      网友评论

        本文标题:python中os.getcwd()和os.path.dirna

        本文链接:https://www.haomeiwen.com/subject/igamvxtx.html