VS Code中Run执行Python脚本遇文件错误,Run and Debug正常?含CSV问题
问题1:VS Code Run功能找不到文件,Debug模式可正常执行
原因
VS Code的普通Run(Run Python File in Terminal)默认以工作区根目录作为当前工作目录,而Run and Debug(Python Debugger)默认会将当前脚本所在目录设为工作目录。如果你的CSV/TXT文件和脚本不在工作区根目录,而是和脚本同目录,Run时会从根目录查找文件导致找不到;Debug时从脚本目录查找,就能成功定位文件。
解决方法
任选一种即可:
- 将CSV/TXT文件移至VS Code工作区的根目录下
- 在脚本中通过代码生成文件的绝对路径,确保无论工作目录在哪都能找到文件:
import os # 获取当前脚本所在的目录路径 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接目标文件的完整路径 csv_file_path = os.path.join(script_dir, "你的文件名.csv") - 修改VS Code配置:在
.vscode/settings.json中添加"python.terminal.executeInFileDir": true,让Run功能也使用脚本所在目录作为工作目录
问题2:csv.reader循环报错“readline of closed file”,放入with块又提示需文本模式
第一个错误的原因与解决
with open(...) as f:代码块执行结束后,Python会自动关闭文件对象f。而csv.reader(f)是依赖这个打开的文件对象工作的,文件关闭后再调用reader的循环就会触发“readline of closed file”错误。
解决方法:把遍历csv.reader的for循环完全放在with open块内部,确保文件在循环执行时处于打开状态。
第二个错误的原因与解决
提示“需以文本模式打开文件”,是因为你打开文件时使用了二进制模式(比如open("file.csv", "rb"))。csv模块要求文件以文本模式打开,所以打开时使用"r"(默认即为文本模式)或明确写"rt"即可,不要用二进制模式。
正确示例代码:
import csv import os script_dir = os.path.dirname(os.path.abspath(__file__)) csv_path = os.path.join(script_dir, "data.csv") # 以文本模式打开文件,循环放在with块内执行 with open(csv_path, "r", encoding="utf-8") as f: reader = csv.reader(f) for row in reader: print(row)
内容的提问来源于stack exchange,提问作者S'mon
相关产品推荐
相关产品推荐

