有如下目录结构
1 | > home |
各文件内容如下
1 | # main.py |
1 | # module_a.py |
1 | # module_a.txt |
1 | # module_b.py |
运行命令
1 | cd /home/main |
1 | cd /home |
这是因为在import导入包的时候,会在当前import代码所在的文件的目录下搜索包,即main.py文件总会在main.py所处的main目录下搜索包
而在读取文件的时候,是在pwd,当前目录下搜索文件,即在home文件夹运行main/main.py时,在home中找不到module_a.txt,所以报错
如何让读取文件不受pwd(终端当前工作目录)影响,需要借助python的__file__变量以及os.path.dirname函数。每个python文件都会有一个__file__的文件变量,这个变量存储着文件所在的路径,os.path.dirname为路径提取函数,它可以从下往上一层一层地嵌套提取目录路径,每调用一次就会得到少一层目录的路径。
module_a.py改成如下代码
1 | import os |
改完后再执行如下命令
1 | cd /home |