首页 > 解决方案 > 当路径是没有文件名的路径时,Python listdir 函数不起作用

问题描述

我正在使用 os.path 列出目录内容。在我的代码中,无论作为字符串传递的路径是否具有文件名或者它只是一个路径,我都想这样做。如果它附加了文件名,则 lisdir 工作,如果没有,则它不起作用。

例如,如果它是 /home/me/Documents/file.jpg,那么它可以工作,如果它只是 /home/me/Documents,它什么也不做。

我尝试用不同的方法包装路径字符串,例如 join(path,"")、dirname(path) 和 path(path) 以将其转换为路径对象,因为它可能不起作用,因为它是一个字符串。

我的代码如下所示:

if isfile(path):
    contents = listdir(dirname(path))
else:
    contents = listdir(path)
print(contents)

我希望它在这两种情况下都列出文件,但是当它是路径时它不会。

在另一个目录上测试:

chris@DJANGO-DEV-1:~/Documents/mydir$ ls
file1.txt  file2.txt  file3.txt  file4.txt  file5.txt

In [2]: filecleanup("/home/chris/Documents/mydir/file1.txt")                                        
/home/chris/Documents/mydir/file1.txt
/home/chris/Documents/mydir
['file4.txt', 'file1.txt', 'file3.txt', 'file5.txt', 'file2.txt']

In [3]: filecleanup("/home/chris/Documents/mydir")                                                  
[LISTS DIRECTORY BELOW]

In [4]: filecleanup("/home/chris/Documents/mydir/")                                                 
['file4.txt', 'file1.txt', 'file3.txt', 'file5.txt', 'file2.txt']

标签: pythonpath

解决方案


尝试:

if isfile(path):
    contents = listdir(os.path.split(path)[0])
else:
    contents = listdir(path)
print(contents)

推荐阅读