如何在运行命令 python <PYTHONFILE> 时更改终端路径?
我所有的Python文件都放在同一个文件夹里,路径是"E:\Python Learning\Dave Gray tutorials"
,直接运行这些文件都没问题。
不过,当我在VSCode的终端里运行其中一个文件时,却出现了错误:
PS E:\Python Learning> python hello_person.py
C:\Users\victo\AppData\Local\Programs\Python\Python312\python.exe:
can't open file 'E:\\Python Learning\\hello_person.py':[Errno 2] N
o such file or directory
PS E:\Python Learning>
我该怎么做才能把路径改成这个呢?
如果你能帮我找出将来创建正确路径的最佳方法,我会非常感激。
右键点击文件夹然后选择“在集成终端中打开”可以给我正确的路径,但这样做不太方便,因为文件夹里的其他.py文件在默认终端中都能正常运行。
这里是这个文件的代码:
import argparse
parser = argparse.ArgumentParser(
description="Provides a personal greeting."
)
parser.add_argument(
"-n", "--name", metavar="name",
required=True, help="The name of the person to greet."
)
args = parser.parse_args()
msg = f"Hello {args.name}!"
print(msg)
我试着改了绝对路径。
程序只有在我把文件从原来的文件夹移动到终端错误信息中提到的那个文件夹时才运行。
2 个回答
程序 python.exe
启动时会在自己的环境中运行,就像你打开其他应用程序一样。这个环境有几个属性,其中一个叫做“工作目录”。默认情况下,从命令行启动的程序(比如你启动 Python)会使用当前命令行的目录作为工作目录。在你的例子中,这个目录是 E:\Python Learning
,从提示符可以看出来。
在程序内部访问相对路径时,都是相对于这个工作目录的。因此,当 python
尝试打开 hello_person.py
时,它会在工作目录中查找这个文件,因为它是一个相对路径(没有指定具体的目录)。运行 python .\hello_person.py
也是完全一样的。
所以,你可以这样做:
cd "Dave Gray tutorials"
python hello_person.py
或者:
cd "E:\Python Learning\Dave Gray tutorials"
python hello_person.py
(注意:这假设当前驱动器是 E:
- Windows 在这方面有“当前驱动器”的属性,这和 Linux 或 MacOS 有所不同;当然,你可以通过输入 E:
命令来切换到当前目录,或者像用户 @mklement0 在评论中提到的那样,在 cd
命令后加上 /d
。)
或者:
python "Dave Gray tutorials\hello_person.py"
以及其他变体。所有这些方法都会启动脚本,但要记住,在脚本内部,工作目录将是 Python 自身的工作目录。因此,在前两个例子中,工作目录是 E:\Python Learning\Dave Gray tutorials
,而在最后一个例子中,工作目录是 E:\Python Learning
。
最后,如果你想知道如何将脚本的工作目录更改为脚本本身所在的目录,可以这样做:
import os
script_dir = os.path.dirname(os.path.realpath(__file__))
os.chdir(script_dir) # just like running `cd` before the script runs