Python脚本PyCharm运行正常,CMD执行提示找不到文件的解决方法
问题:PyCharm与CMD运行Python代码的路径差异问题
我的代码如下:
import os print(list(os.listdir('test')))
在PyCharm中运行该代码时,输出结果为:['test.txt']。
但在Windows命令提示符(CMD)中运行同一文件时,出现如下报错:
(MLspraak) C:\Users\phili>python C:\Users\phili\PycharmProjects\MLspraak\test.py Traceback (most recent call last): File "C:\Users\phili\PycharmProjects\MLspraak\test.py", line 2, in <module> print(list(os.listdir('test'))) FileNotFoundError: [WinError 3] The system cannot find the path specified: 'test'
我使用了虚拟环境(venv),且确认运行的是同一Python版本,请问为何会出现这种运行差异?该如何解决?
原因与解决方案
原因
- PyCharm默认将项目根目录(此处为
C:\Users\phili\PycharmProjects\MLspraak)设为工作目录,代码中的相对路径test是相对于该根目录的,因此能找到对应文件夹。 - CMD中运行脚本时,工作目录是你当前所在的路径(此处为
C:\Users\phili),代码会去这个路径下查找test文件夹,自然找不到目标目录。
解决方案
方法1:CMD中切换到项目根目录再运行
先进入项目所在文件夹,再执行脚本:
(MLspraak) C:\Users\phili>cd C:\Users\phili\PycharmProjects\MLspraak (MLspraak) C:\Users\phili\PycharmProjects\MLspraak>python test.py
方法2:修改代码使用绝对路径
通过__file__获取脚本所在的绝对路径,再拼接目标文件夹路径,确保无论在哪运行都能定位到目录:
import os # 获取当前脚本所在的目录 script_dir = os.path.dirname(os.path.abspath(__file__)) # 拼接test文件夹的绝对路径 test_dir = os.path.join(script_dir, 'test') print(list(os.listdir(test_dir)))
方法3:在CMD中指定工作目录运行
用cd /d切换目录并同时运行脚本,一行命令完成:
(MLspraak) C:\Users\phili>cd /d C:\Users\phili\PycharmProjects\MLspraak && python test.py
内容的提问来源于stack exchange,提问作者Philip T 2007
相关产品推荐
相关产品推荐

