我有以下代码:
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__)
因为它返回../test/myFile.py
代替../originalFolder/myFile.py
。当然我可以通过使用fixed来解决这个问题os.chdir("../originalFolder")
但这对我来说似乎有点错误,但这适用于 Eclipse 和控制台。
附:我在用着os.getcwd()
实际上是因为我想确保没有添加这样的文件夹,否则我根本不必切换目录
那么我的方法有什么问题或者我搞砸了什么吗?或者是什么? :)
提前致谢! :)
看看有什么价值__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
Note:如果您关心兼容性(您不喜欢奇怪的路径错误),您应该使用os.path.join()每当您组合路径时。
Note:我知道我的解决方案非常简单(记住绝对路径),但有时最简单的解决方案是最好的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)