Python listdir函数没有';如果路径是没有文件名的路径,则无法工作

Python listdir函数没有';如果路径是没有文件名的路径,则无法工作,python,path,Python,Path,我正在使用os.path列出目录内容。在我的代码中,无论作为字符串传递的路径是否有文件名,或者它是否只是一个路径,我都要这样做。如果它附加了一个文件名,那么lisdir工作;如果没有,那么它就不工作 例如,如果它是/home/me/Documents/file.jpg,那么它可以工作,如果它只是/home/me/Documents,那么它什么也不做 我尝试过用不同的方法包装路径字符串,比如join(path,“”)、dirname(path)和path(path),将其转换为path对象,因为它

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

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

我尝试过用不同的方法包装路径字符串,比如join(path,“”)、dirname(path)和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']
尝试:


在您的第一个案例中,
dirname
返回什么?确切地说?在我的示例中,路径会返回“/home/me/Documents”奇数。我在本地进行了测试,在字符串上使用listdir没有问题。下一步是包含一个完全工作的示例,包括导入和所有,您得到的实际值,而不是“不工作”,以及您使用的所有东西的版本(主要是python,但如果您有一个操作系统模块的特殊版本,现在是提它的时候了),我认为这是因为“/”没有附加到路径的末尾。我在一个测试目录上做了一些测试。在代码运行的上下文中,我不再需要处理它只是路径的情况,所以我将继续。我仍然不明白为什么它需要“/”虽然,因为dirname函数将它转换为一个路径,而条件的第一部分没有斜杠。如果你能解释一下发生了什么,那会很有帮助。“[下面的目录列表]”是什么意思?这是很久以前的事了,我不记得这是为了哪个项目。我想我可能在Djano中发现了一些东西,它有文件上传到数据库的信号,然后我有一些代码首先删除所有文件。很抱歉,我不能说这是否解决了问题,因为我很久以前就离开了。好吧,不用担心,很乐意帮忙!
if isfile(path):
    contents = listdir(os.path.split(path)[0])
else:
    contents = listdir(path)
print(contents)