Python-如何正确确定当前脚本目录?

发布于 2021-02-02 23:20:25

我想看看确定python中当前脚本目录的最佳方法是什么?

我发现由于调用python代码的方式很多,很难找到一个好的解决方案。

这里有一些问题:

  • __file__如果脚本与执行没有定义exec,execfile
  • __module__仅在模块中定义

用例:

  • ./myfile.py
  • python myfile.py
  • ./somedir/myfile.py
  • python somedir/myfile.py
  • execfile(‘myfile.py’) (来自另一个脚本,该脚本可以位于另一个目录中,并且可以具有另一个当前目录。

我知道没有完美的解决方案,但是我正在寻找能够解决大多数情况的最佳方法。

最常用的方法是,os.path.dirname(os.path.abspath(__file__))但是如果你使用来从另一个脚本执行脚本,则此方法实际上不起作用exec()

注意
使用当前目录的任何解决方案都会失败,这可能会因调用脚本的方式而有所不同,或者可以在运行的脚本中进行更改。

关注者
0
被浏览
171
1 个回答
  • 面试哥
    面试哥 2021-02-02
    为面试而生,有面试问题,就找面试哥。
    os.path.dirname(os.path.abspath(__file__))
    

    确实是你将获得的最好的。

    exec/ 执行脚本是不寻常的execfile。通常,你应该使用模块基础结构来加载脚本。如果必须使用这些方法,我建议设置__file__globals传递给脚本,以便它可以读取该文件名。

    没有其他方法可以在执行代码中获取文件名:如你所述,CWD可能位于完全不同的位置。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看