os.path.isfile() return 错误
os.path.isfile() return False
为什么这段代码return什么都没有?
>>> [f for f in os.listdir('Scripts') if os.path.isfile(os.path.abspath(f))]
[]
>>> os.listdir('Scripts')
['dmypy.exe', 'easy_install-3.8.exe', 'easy_install.exe', 'f2py.exe', 'futurize.exe', 'iptest.exe', 'iptest3.exe', 'ipython.exe', 'ipython3.exe', 'mypy.exe', 'mypyc', 'pasteurize.exe', 'pip.exe', 'pip3.8.exe', 'pip3.exe', 'prichunkpng', 'priforgepng', 'prigreypng', 'pripalpng', 'pripamtopng', 'pripnglsch', 'pripngtopam', 'priweavepng', 'pygmentize.exe', 'pyi-archive_viewer.exe', 'pyi-bindepend.exe', 'pyi-grab_version.exe', 'pyi-makespec.exe', 'pyi-set_version.exe', 'pyinstaller.exe', 'stubgen.exe', 'stubtest.exe', 'wheel.exe']
我理解这个问题的答案Why do os.path.isfile return False?,但我在这里添加了文件名的完整路径,但无论如何它不起作用
abspath
不是这里的正确工具。将 os.join
与 "Scripts" 目录一起使用:
[f for f in os.listdir('Scripts') if os.path.isfile(os.path.join("Scripts", f))]
关于abspath
- 根据documentation,它基本上将当前工作目录加入文件名。如果您正在查看的文件不在当前目录中,这不是您想要的。
引用文档:
abspath
: ... 在大多数平台上,这相当于调用函数 normpath()
,如下所示:normpath(join(os.getcwd(), path))
.
您的代码 returns 是一个空的 list
因为 os.path.abspath()
只是将给定的文件名附加到当前目录,而这些文件中的 none 实际上存在于当前目录中.
如果您想从 Scripts
文件夹中获取所有文件,那么您需要使用@Roy2012
的答案
为什么这段代码return什么都没有?
>>> [f for f in os.listdir('Scripts') if os.path.isfile(os.path.abspath(f))]
[]
>>> os.listdir('Scripts')
['dmypy.exe', 'easy_install-3.8.exe', 'easy_install.exe', 'f2py.exe', 'futurize.exe', 'iptest.exe', 'iptest3.exe', 'ipython.exe', 'ipython3.exe', 'mypy.exe', 'mypyc', 'pasteurize.exe', 'pip.exe', 'pip3.8.exe', 'pip3.exe', 'prichunkpng', 'priforgepng', 'prigreypng', 'pripalpng', 'pripamtopng', 'pripnglsch', 'pripngtopam', 'priweavepng', 'pygmentize.exe', 'pyi-archive_viewer.exe', 'pyi-bindepend.exe', 'pyi-grab_version.exe', 'pyi-makespec.exe', 'pyi-set_version.exe', 'pyinstaller.exe', 'stubgen.exe', 'stubtest.exe', 'wheel.exe']
我理解这个问题的答案Why do os.path.isfile return False?,但我在这里添加了文件名的完整路径,但无论如何它不起作用
abspath
不是这里的正确工具。将 os.join
与 "Scripts" 目录一起使用:
[f for f in os.listdir('Scripts') if os.path.isfile(os.path.join("Scripts", f))]
关于abspath
- 根据documentation,它基本上将当前工作目录加入文件名。如果您正在查看的文件不在当前目录中,这不是您想要的。
引用文档:
abspath
: ... 在大多数平台上,这相当于调用函数 normpath()
,如下所示:normpath(join(os.getcwd(), path))
.
您的代码 returns 是一个空的 list
因为 os.path.abspath()
只是将给定的文件名附加到当前目录,而这些文件中的 none 实际上存在于当前目录中.
如果您想从 Scripts
文件夹中获取所有文件,那么您需要使用@Roy2012