Python 里面的 os 两种获取路径的模式:getcwd 和 os.path.realpath () 的区别

Python 里面的 os 两种获取路径的模式:getcwd 和 os.path.realpath()的区别

来个考题,快来回答下!!

  • Python
    50 引用 • 197 回帖 • 1 关注
1 操作
huahua 在 2020-08-07 21:55:10 更新了该帖
6 回帖
请输入回帖内容 ...
  • fighting33

    根据一楼同学的结论进行的实际操作发现的不同

    创建两个不同的文件夹 A_1 和 B_1

    在 A_1 下面创建一个 py 文件 test_1

    在 A_1 下面创建一个文件夹 path_test,并在文件夹内放新建一个 py 文件 A_2.py

    在 B_1 下面创建一个 py 文件 test_2

    在 test_1 分别用 getcwd 和 realpath 的方法获取 A_2.py 的路径

    import os
    
    #使用getcwd获取根目录,在用jion拼接
    base_path_2=os.getcwd()
    A_2_getcwd_path=os.path.join(base_path_2,'path_test','A_2.py')
    #print('使用getcwd方式的A_2路径',A_2_getcwd_path)
    
    #使用realpath获取根目录,在用jion拼接
    #print('--------------------分割线线线线------------------------')
    base_path_1=os.path.split(os.path.realpath(__file__))[0]
    A_2_real_path=os.path.join(base_path_1,'path_test','A_2.py')
    #print('使用realpath方式的A_2路径',A_2_real_path)
    

    输出结果image.png

    现在在 B_2.py 下面获取这两个变量 A_2_getcwd_path 和 A_2_real_path

    from A_1 import test_1
    
    print('在B_1文件夹下,获取使用getcwd方式的A_2路径',test_1.A_2_getcwd_path)
    print('------------------------------分割线-------------------------------------')
    print('在B_1文件夹下,获取使用realpath方式的A_2路径',test_1.A_2_real_path)
    

    输出结果如下
    image.png
    可以发现使用 realpath 方法获得路径经过调用后没有发生变化

    但是用 getcwd 方法获取的路径发了变化:

    1.第一次使用时 test_1 实在 A_1 下面,所以生成的当前目录是:E:\python_12\A_1\path_test\A_2.py

    2.经过调用后,test_2 是在 B_1 下面,所以生成的当前目录是:E:\python_12\B_1\path_test\A_2.py

    总结:getcwd 会根据当前文件所以在位置而进行变化,调用时要注意两个文件是不是在同一个目录下面

  • 其他回帖
  • mmklyz

    getcwd()获取当前目录;其他文件调用时,会根据当前文件的位置获取目录,不同的文件调用,值是不一样的。
    os.path.realpath()获取真实路径;其他文件调用时,仍是取这个路径,不会发生变化。

  • huahua
  • Sunny

    getcwd()获取相对路径;os.path.realpath()获取绝对路径。

  • 查看更多回帖