Python os.listdir()行为奇怪,需要一些解释

时间:2016-10-20 17:15:53

标签: python pycharm virtualenv

我在PyCharm IDE(Windows 10)上使用python和Anaconda,并使用虚拟环境。这是我的问题代码,

print('# File...')
print(os.listdir("../MyData/Data/"))

当我在控制台中运行代码时(右键单击然后"在控制台中执行部分")它完美运行。但是,当我运行整个代码(来自绿色按钮)时,它说,FileNotFoundError:[WinError 3]系统无法找到指定的路径:' ../ MyData / Data /'

有人可以解释为什么会这样,以及可能的方向?谢谢。

3 个答案:

答案 0 :(得分:0)

小心点, Windows通常在地址中有"\"。 这很简单,但可能是个大问题。 由于"\"用作转义符,因此您必须使用"\\"。 试试这个测试,看看地址是否正确:

import os
print(os.getcwd())

它将打印您当前的工作目录

答案 1 :(得分:0)

您应该使用如下的完整路径:

os.listdir ("C:\Users\YourUsername\Full\Path")

答案 2 :(得分:0)

所有程序都有一个工作目录,由任何启动它的代码决定。右键单击并在控制台中运行时,控制台作为其初始化过程的一部分,专门将当前工作目录设置为主目录。当您在gui中运行时,发生的情况取决于启动程序的窗口管理器。我认为Microsoft Windows喜欢将CWD设置为可执行文件的目录,但我不确定。

修复它的方法是在程序启动时手动设置当前目录。

import os
os.chdir(os.path.expanduser('~'))

您可以在gui和控制台案例中执行此操作。运行此代码后,相对路径将相对于您的主目录。