我在一台用于自动测试的特定OSX机器上遇到问题,os.listdir引发了OSError。
有趣的是:
os.path.exists("/Volumes/label_of_mounted_drive") -> True
os.path.isdir("/Volumes/label_of_mounted_drive") -> True
但
os.listdir("/Volumes/label_of_mounted_drive") -> OSError ([Errno 2] No such file or directory)
路径的统计信息是
posix.stat_result(st_mode=16877, st_ino=1, st_dev=939524119, st_nlink=2, st_uid=502, st_gid=20, st_size=68, st_atime=1523980718, st_mtime=1523980718, st_ctime=1523980718)
驱动器已安装,可见并可用于取景器。我可以通过终端列出它。我甚至可以通过单独的python进程列出它(例如调用subprocess和'python',' - c','import os; print os.listdir(“the_path_here”)')
更有趣的部分是它在2天前工作,现在它停止了*。
另外 - 在终端中运行python - listdir在这个特定的路径上运行,通过nosetests / unittests运行测试 - listdir被破坏了。
现在这不是第一次在这台特定的机器上发生这种情况。上次我刚刚重新安装整个系统并修复了它。 现在 - 我打算做同样的事情 - 但是在这一点上我只是非常好奇是什么导致了这一点。
有什么想法吗?
*我从virtualenv切换到pyenv-virtualenv后停止工作。但经过一段时间和许多其他尝试后,我卸载了所有brew包并自行酿造,创建了新的用户,删除了旧用户,从头开始在新用户上安装brew和python,然后回到简单的virtualenv,一切都没有成功: (
机器设置为:
答案 0 :(得分:0)
我已经对此做了一些研究,看起来这些都是尝试的事情:
/Volumes/label_of_mounted_drive
,我相信您应该os.listdir(os.path.expanduser('/Volumes/label_of_mounted_drive'))
。os.chdir()
。我希望这有用。
答案 1 :(得分:0)
原来,导入matplotlib打破了这个(测试在virtualenv上运行)。为什么 - 我不知道。 我在运行测试后将绘图移动到了,并且我在方法中导入了matplotlib。