如何解决os.path.isfile不起作用为什么?
因为你需要加入dirname
同x
,os.listdir()
只是列出了内容直接,内容不具有完整路径。
范例-
[x for x in os.listdir('dirname') if os.path.isfile(os.path.join('dirname',x))]
如果未提供完整路径,则os.path.isfile()
在当前目录中搜索,因此当您给出时'.'
,os.listdir()
将获得正确的列表。
范例-
假设某个文件夹-/a/b/c
具有文件-x
并y
在其中。
当您执行-时os.listdir('/a/b/c')
,返回的列表类似于-
['x','y']
即使您在其中提供绝对路径os.listdir()
,列表中返回的文件也将具有指向目录的相对路径。您将需要手动加入dirx
以获得正确的结果。
在您的第三个示例中,它不起作用,因为它os.path.abspath()
也适用于当前目录,因此,如果执行以下操作-
os.path.abspath('somefile')
产生的结果将是–/path/to/current/directory/somefile
不会验证该文件是否为真实文件/目录。
在文档(Emphasis mine)中明确指出-
返回路径名路径的标准化绝对化版本。在大多数平台上,
其中,os.getcwd()
返回当前工作目录的路径。
解决方法
我正在尝试这样做:
import os
[x for x in os.listdir('.') if os.path.isfile(x)]
[x for x in os.listdir('dirname') if os.path.isfile(x)]
[x for x in os.listdir(os.path.abspath('dirname')) if os.path.isfile(os.path.abspath(x))]
第一行有效:
[x for x in os.listdir('.') if os.path.isfile(x)]
但是接下来的两个:
[x for x in os.listdir('dirname') if os.path.isfile(x)]
和
[x for x in os.listdir(os.path.abspath('dirname')) if os.path.isfile(os.path.abspath(x))]
只是输出 []
为什么?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。