【问题标题】:Code works in Idle but getting an error in VS Code代码在空闲状态下工作,但在 VS Code 中出现错误
【发布时间】:2019-11-24 19:38:44
【问题描述】:

所以我正在编写需要导入文件的代码。 python代码文件和我需要导入的文件都在同一个目录中,所以我没有指定整个路径。

代码在 IDLE 中运行良好,但在 Visual Studio Code 中出现错误

我添加了行 “打印(少数)” 检查它是否在 IDLE 中工作。它会打印出来。

import random
infile=open("StatesANC.txt","r")
print("few")

我在 Visual Studio 中得到的错误如下:-

Traceback (most recent call last):
File "f:/SKKU/study/ISS3178 - Python/11/Lab Assignment 11.py", line 2, in <module>
infile=open("StatesANC.txt","r")
FileNotFoundError: [Errno 2] No such file or directory: 'StatesANC.txt'

【问题讨论】:

  • import os 后跟 os.getcwd() 返回什么?
  • IDLE 和 VS Code 不在同一个文件夹中运行...无论如何打开相对于脚本 stackoverflow.com/questions/1270951/… 的文件会更好
  • 我真的不明白你想让我把那个代码放在哪里,以及如何将它跟进到第二部分,因为我对 python 还很陌生。因此,这是根据您的建议对代码进行更改后的代码样子 - import os os.getcwd() import random infile=open("StatesANC.txt","r") print("few") IDLE 的输出没有变化,VS Code 的错误也没有变化。

标签: python python-3.x visual-studio-code python-idle


【解决方案1】:

正如其他人所指出的,问题在于 IDLE 和 Visual Studio Code 的默认工作目录可能不同。

对此进行测试的一种方法是在脚本的开头包含以下内容:

import os
cwd = os.getcwd()
print(cwd)

如果确实如此,您可以将工作目录更改为脚本之一(其文件路径存储在特殊变量 __file__ 中):

import os

script_path = os.path.dirname(os.path.abspath(__file__))
os.chdir(script_path)

此代码应在打开文件之前输入。

【讨论】:

  • 我将您提供的第一组代码包含在我的代码中,但在 VS Code 中仍然出现相同的错误。但在 IDLE 中,我得到以下输出 - F:\SKKU\study\ISS3178 - Python\11 另外,我不明白您在回复的第二部分中所说的内容。
  • 第一部分是检查你的脚本是否运行在不同的工作路径中,这取决于它是在VS Code还是IDLE中运行。您必须在打开文件之前放置它(也许您应该暂时从脚本中注释该部分。第二部分实际上是一种修复它的方法:它基本上是获取脚本的路径并将您的工作目录更改为当open(... 发出时,它应该正确找到文件(即使您稍后将脚本和文件移动到不同的目录)。
  • 那么我是直接复制粘贴第二部分,还是必须像添加路径一样对其进行更改?我觉得我应该做出改变,但我不确定。
  • 无需进行更改,只需将该代码放在脚本之上,但也可以尝试理解它;-) 我建议添加一些 print 语句以查看其中的内容__file__os.path.abspath(__file__)script_path
  • 当然,会这样做
【解决方案2】:

给出完整路径,它应该可以从任何地方运行

假设您使用的是 linux 系统,并且您的文件在 home 的 xyz 文件夹中

import random
infile=open("/home/xyz/StatesANC.txt","r")
print("few")

【讨论】:

  • 如果我输入整个路径,我会在 IDLE 和 VS Code OSError: [Errno 22] Invalid argument: 'F:\\SKKU\\study\\ISS3178 - Python\t\\StatesANC.txt' 中得到以下错误我输入的路径是 - infile=open("F:\SKKU\study\ISS3178 - Python\11\StatesANC.txt","r")
  • 这样试试。 infile=open('F:/SKKU/study/ISS3178 - Python/11/StatesANC.txt',"r")
  • 在字符串中使用\ 字符时,您应该转义它(即用\\ 替换它或使用r (raw) 字符串限定符: r"C:\SKKU..."
  • @norok2 转义 \ 字符修复了 VS Code 中的问题,并且在 IDLE 中没有中断。感谢您的帮助。
  • @switchblade 但请注意,此解决方案非常脆弱,因为移动您的 txt 文件(或沿其路径重命名任何目录)会破坏您的脚本,请查看我的答案以获得更强大的方法。
【解决方案3】:

假设文本文件与您的 python 文件位于同一目录中,您应该能够执行以下操作:

import random
import os

file_name = "StatesANC.txt"
basedir = os.path.dirname(os.path.abspath(__file__))
file_path = os.path.join(basedir, file_name)

infile=open(file_path,"r")
print("few")

【讨论】:

    【解决方案4】:

    将绝对路径放在open(r"/rootpath/subpath/StatesANC.txt","r") 上,可能文件StatesANC.txt 不在路径f:/SKKU/study/ISS3178 - Python/11/ 上。

    【讨论】:

      猜你喜欢
      • 2022-06-10
      • 2023-04-08
      • 1970-01-01
      • 1970-01-01
      • 2018-02-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多