【问题标题】:python os.path.realpath not working properlypython os.path.realpath 无法正常工作
【发布时间】:2012-04-10 20:23:49
【问题描述】:

我有以下代码:

os.chdir(os.path.dirname(os.path.realpath(__file__)) + "/../test")
path.append(os.getcwd())
os.chdir(os.path.dirname(os.path.realpath(__file__)))

应该将/../test 添加到python 路径,它会这样做,并且之后使用PyDev 在eclipse 上运行顺利。

但是当我从控制台第二个 os.chdir 午餐同一个应用程序出错时,实际上错误是在 os.path.realpath(__file__) cus 中返回 ../test/myFile.py 而不是 ../originalFolder/myFile.py。当然我可以通过使用固定的os.chdir("../originalFolder") 来解决这个问题,但这对我来说似乎有点不对劲,但这适用于 eclipse 和控制台。

附:我使用os.getcwd() 实际上是因为我想确保没有添加这样的文件夹,否则我根本不需要切换目录

那么我的方法有什么问题还是我搞砸了?要不然是啥? :)

提前致谢! :)

【问题讨论】:

    标签: python path chdir realpath


    【解决方案1】:

    看看__file__ 的值是什么。它不包含脚本的绝对路径,它是来自命令行的值,因此它可能类似于“./myFile.py”或“myFile.py”。此外,realpath() 不会使路径成为绝对路径,因此在不同目录中调用的 realpath("myFile.py") 仍将返回 "myFile.py"。

    我认为你应该这样做:

    import os.path
    
    script_dir = os.path.dirname(os.path.abspath(__file__))
    target_dir = os.path.join(script_dir, '..', 'test')
    print(os.getcwd())
    os.chdir(target_dir)
    print(os.getcwd())
    os.chdir(script_dir)
    print(os.getcwd())
    

    在我的计算机 (Windows) 上,我得到了这样的结果:

    e:\parser>c:\Python27\python.exe .\rp.py
    e:\parser
    e:\test
    e:\parser
    
    e:\parser>c:\Python27\python.exe ..\parser\rp.py
    e:\parser
    e:\test
    e:\parser
    

    注意:如果您关心兼容性(您不喜欢奇怪的路径错误),您应该在组合路径时使用 os.path.join()。

    注意:我知道我的解决方案非常简单(记住绝对路径),但有时最简单的解决方案是最好的。

    【讨论】:

    • realpath() 使路径成为绝对路径
    • Here 很好地总结了哪个命令做什么。
    • 虽然这不是这个话题上最受欢迎的问题,但这个答案是最正确的。谢谢!
    猜你喜欢
    • 2023-03-26
    • 2018-10-10
    • 1970-01-01
    • 1970-01-01
    • 2016-12-01
    • 2017-11-07
    • 2020-03-18
    • 2012-09-22
    • 2019-02-15
    相关资源
    最近更新 更多