为什么os.getcwd()在vs代码和终端中返回不同的值?

时间:2019-01-22 03:34:03

标签: python python-3.x

我编写了一个简单的python3.7代码,如下所示:

import os

if __name__ == "__main__":
    c = os.getcwd()
    print(c)

此代码路径为~/PyStudy/OsTest/test.py

当我在VS Code和Terminal中运行它时,出现了不同的结果。

  • 在终端中,它返回:~/PyStudy/OsTest
  • 在VS Code中,它返回:~/PyStudy,没有/OsTest

我在VS Code中使用了Code Runner来运行python代码。

我不知道为什么,请帮助我。

3 个答案:

答案 0 :(得分:2)

因为它们在不同的目录中运行。

显然,您是在父目录中启动VS Code的,它一直在那里运行直到终止它。

显然,您是通过首先在该目录中执行cd来从终端运行脚本的。不过,没有必要这样做。试试

( cd /; python3 ~/PyStudy/OsTest/test.py )

在终端提示下。

通常来说,进程的当前工作目录是一种便利机制。通过使用相对路径,您可以编写较短的文件名。但是在大多数情况下,您可以在任何目录中运行的进程中使用绝对文件名代替。

答案 1 :(得分:0)

如果它返回不同的值,则可以确定它返回正确的值。区别必须在于您运行程序的方式。 VS代码可能会将其工作目录设置为与您从终端运行时所执行的操作不同的目录。

答案 2 :(得分:0)

两者的执行入口点不同。这就是为什么它发生的原因。