如何解决Python中简单的FileNotFoundError问题?
shutil.copyfile报FileNotFoundError:仅用文件名无法找到文件的解决办法
我用shutil模块写了一个简单的文件复制代码,想要直接用文件名而非完整路径来操作,但始终触发FileNotFoundError,只有输入完整文件路径才能正常运行。
已尝试的操作
- 核对文件名,确认拼写完全一致;
- 更换为.txt文件并反复核对文件名,仍报错;
- 将项目文件夹移至Python安装目录(C:\Users\user\AppData\Local\Programs\Python\Python312),问题未解决;
- 怀疑VS Code权限问题,将文件移至VS Code安装目录(C:\Users\user\AppData\Local\Programs\Microsoft VS Code)运行,依旧报错;
- 分别选择VS Code安装目录、Python安装目录作为运行目录,均无效;
- 尝试将文件移至C:\Users\user.vscode路径,分别选择项目文件夹和.vscode文件夹运行,均失败。
当前代码
import shutil shutil.copyfile("test",'copy.txt') #src,dst
报错信息
Traceback (most recent call last): File "c:\Users\user\AppData\Local\Programs\Microsoft VS Code\My Projo's (VSCODE)\Python 🐍\Python 🐍 - Lessons\DUPEME", line 9, in <module> shutil.copyfile("test", "copy.txt") File "C:\Users\user\AppData\Local\Programs\Python\Python312\Lib\shutil.py", line 260, in copyfile with open(src, 'rb') as fsrc: ^^^^^^^^^^^^^^^ FileNotFoundError: [Errno 2] No such file or directory: 'test'
解决办法
1. 确认文件实际名称(含扩展名)
Windows默认会隐藏已知文件的扩展名,可能你看到的"test"实际是"test.txt",但代码里只写了"test"导致系统找不到。可以在文件夹选项中开启「显示文件扩展名」,确认文件的完整名称后,在代码里使用完整文件名(比如"test.txt")。
2. 基于脚本路径拼接文件路径
Python运行时的当前工作目录不一定是脚本所在的文件夹,你可以通过脚本路径来拼接目标文件的绝对路径,确保能找到文件:
import os import shutil # 获取当前脚本所在的文件夹路径 script_folder = os.path.dirname(os.path.abspath(__file__)) # 拼接源文件的完整路径 source_file = os.path.join(script_folder, "test.txt") # 执行复制 shutil.copyfile(source_file, "copy.txt")
3. 配置VS Code运行时的工作目录
在VS Code中,可以修改运行配置,让程序以脚本所在文件夹作为工作目录:
- 打开「运行和调试」面板(Ctrl+Shift+D);
- 点击「创建launch.json文件」,选择Python环境;
- 在launch.json中添加
"cwd": "${fileDirname}"配置,示例:
{ "version": "0.2.0", "configurations": [ { "name": "Python: 当前文件", "type": "python", "request": "launch", "program": "${file}", "console": "integratedTerminal", "cwd": "${fileDirname}" } ] }
内容的提问来源于stack exchange,提问作者SinTax
相关产品推荐
相关产品推荐

