python-3.x 我不能直接在VSCode中运行程序,但可以使用VSCode中的终端运行它

arknldoa  于 2023-08-08  发布在  Python
关注(0)|答案(2)|浏览(140)

环境数据

Windows 11系统
Python 3.11.4
VS代码

程序信息

以下是关于我的程序的一些基本信息:
此程序的路径:d:\Learning\Programming\python_work\File_Reader\file_reader.py

file_path = 'File\\pi_digits.txt'
with open(file_path) as file_object:
    contents = file_object.read()
    print(contents)
#This program try to open the file:d:\Learning\Programming\python_work\File_Reader\File\pi_digits.txt
#and print the numbers stored in this file

字符串
所以file_reader.py和文件夹File都在文件夹File_Reader中。

pi_digits.txt在文件夹File中。

我想使用相对路径来告诉我的程序pi_digits.txt在哪里。
我运行了两次代码,我认为至少我的代码是正确的。

第一次尝试

我在终端中用VS Code运行它

PS D:\Learning\Programming\python_work\File_Reader> python file_reader.py


而结果正是我想要的

3.1415926535
  8979323846
  2643383279

第二次尝试

使用运行代码按钮(Crtl+Alt+N)运行
但似乎找不到pi_digits.txt的位置。

[Running] python -u "d:\Learning\Programming\python_work\File_Reader\file_reader.py"
Traceback (most recent call last):
  File "d:\Learning\Programming\python_work\File_Reader\file_reader.py", line 2, in <module>
    with open(file_path) as file_object:
         ^^^^^^^^^^^^^^^
FileNotFoundError: [Errno 2] No such file or directory: 'File\\pi_digits.txt'

[Done] exited with code=1 in 0.097 seconds

最后一次尝试

我用绝对路径重写了程序

file_path = 'd:\\Learning\\Programming\\python_work\\File_Reader\\File\\pi_digits.txt'
with open(file_path) as file_object:
    contents = file_object.read()
    print(contents)


以上两种方法都能很好地工作
我不知道为什么当我使用相对路径,该程序不工作,在我的 * 第二次尝试 *

iibxawm4

iibxawm41#

当您指定相对路径时,运行python file_reader.py时您所处的目录是重要的。
1.当您使用Visual Studio时,它将自动在项目的基目录中加载shell。该项目目录还包含文件py_digits.txt,因此一切正常。
1.当您使用任何其他终端时,它将默认加载用户主目录中的shell。并且该主目录不包含文件py_digits.txt,因此无法找到该文件。
当您指定绝对路径时,运行python file_reader.py时,您在哪个目录中并不重要。文件总能找到。

mnemlml8

mnemlml82#

正如jraufeisen所提到的,这与vscodeterminal的不同路径有关。
因此,我倾向于这样做,以获得通用代码,但明确的路径。

import os

current_file = os.path.abspath(__file__)
print(current_file)

字符串

相关问题