2022年 11月 3日

Path.cwd()使用注意事项(使用Path.cwd出现的bug)

对于CWD的理解

python中cwd其实就是current work dir 的意思,就是当前工作目录。当前工作目录并不是你运行的python文件所在的目录就叫做工作目录,而是你在命令行中运行脚本时,命令行显示你所在的目录。
举个例子:我有一个test.py的文件,它在我的文件系统中位置是/home/hj/fire/detection/yolo/test.py
下面是我运行脚本的地址

  • 注意,这是我终端显示我所在的地址
/home/hj/fire
  • 1

和脚本里代码


from pathlib import Path
if __name__=='__main__':
    cur=Path.cwd()
    print(cur)
  • 1
  • 2
  • 3
  • 4
  • 5

下面我执行如下命令:

/home/hj/fire  /home/hj/anaconda3/envs/FireDetection/bin/python "/home/hj/fire/detection/yolo/test.py"
  • 1

解释一下,上面其实就是在/home/hj/fire下执行python "/home/hj/fire/detection/yolo/test.py "就是在FireDetection环境下执行python命令而已。
结果显示:

/home/hj/fire
  • 1

再例如我更换终端所在位置:

/home/hj/fire/detection
  • 1

此时我再执行脚本,那么输出为:

/home/hj/fire/detection
  • 1

因此有结论:

  • 工作目录不是你的test.py文件所在的目录,而是你终端所在的位置!
  • Path.cwd()获取的位置就是终端所在的位置
    如果不了解上述规则的话会出现很多错误!