Mr-a2z

os.getcwd()、sys.path[0]、sys.argv[0]和__file__的区别

要分清这几个的区别与使用条件,实际测试一下是最准确的。

设计测试方法:

一个主模块用来运行,一个子模块用来被主模块调用

主模块路径: 

/Users/stephen/Documents/code/test_dir/01test

子模块路径:  

/Users/stephen/Documents/code/test_dir/02test

运行模块的路径:  

/Users/stephen/Documents/code/test_dir/01test/001_test

ok 现在编写两模块代码

  • 子模块 submodule.py

    import os
    import sys
    def child_test():
    print('sub os.getcwd():{}'.format(os.getcwd()))
    print('sub sys.path[0]:{}'.format(sys.path[0]))
    print('sub sys.argv[0]:{}'.format(sys.argv[0]))
    print('sub __file__:{}'.format(__file__))
    if __name__ == '__main__':
    chid_test()
  • 主模块 mainmodule.py
    ```py
    import os
    import sys
    import submodule
    def main():
    print('main os.getcwd():{}'.format(os.getcwd()))
    print('main sys.path[0]:{}'.format(sys.path[0]))
    print('main sys.argv[0]:{}'.format(sys.argv[0]))
    print('main file:{}'.format(file))

    submodule.child_test()

if name == 'main':
main()


 ## 目录结构 
 

├── 01test
│ ├── 001_test # 运行目录
│ └── mainmodule.py # 主模块
└── 02test
└── submodule.py # 被调用模块


## ok 来看看结果  

Traceback (most recent call last):
File "../mainmodule.py", line 3, in

分类:

技术点:

相关文章:

  • 2022-12-23
  • 2021-11-18
  • 2022-12-23
  • 2021-08-21
  • 2022-12-23
  • 2021-05-13
  • 2022-02-07
猜你喜欢
  • 2021-09-15
  • 2022-12-23
  • 2021-11-14
  • 2022-12-23
  • 2021-08-06
  • 2021-11-21
相关资源
相似解决方案