两个目录的区分
- (第一种)执行脚本时执行时的目录:在哪个目录中执行的,就获取哪个目录
- (第二种)脚本文件所在目录:虽然在部门的目录中进行执行的,但是总是获得脚本真实所在的目录
例子:目录结构
|-C:/test
| |-rootpath
| | |-path.py
| | |-sub_path
| | | |-sub_path.py
# 其中,path.py中调用了sub_path.py
# 在c:/test目录下,执行
python c:/test/rootpath/path.py
os.getcwd():执行脚本时所在目录
- 在path.py和sub_path.py中的 os.getcwd() 的命令均获得
c:/test
sys.path[0]和sys.argv[0]:被初始执行的脚本文件所在目录
- 在path.py中的 sys.path[0] 和 sys.argv[0] 的命令均获得
c:/test/rootpath
- 在sub_path.py中的 sys.path[0] 和 sys.argv[0] 的命令均获得
c:/test/rootpath
os.path.split(os.path.realpath(__file__))[0] :__file__所在脚本文件所在目录
- 在path.py中的 os.path.split(os.path.realpath(__file__))[0] 的命令均获得
c:/test/rootpath
- 在sub_path.py中的 os.path.split(os.path.realpath(__file__))[0] 的命令均获得
c:/test/rootpath/sub_path
注意当打包文件未exe文件时,尽量使用第三种情况,不会出错