仅列出当前目录中的文件

2024-04-26 14:44:53 发布

您现在位置:Python中文网/ 问答频道 /正文

在Python中,我只想列出当前目录中的所有文件。我不希望从任何子目录或父目录中列出文件。

似乎确实有类似的解决方案,但它们似乎对我不起作用。这是我的代码片段:

import os
for subdir, dirs, files in os.walk('./'):
    for file in files:
      do some stuff
      print file

假设我在当前目录中有两个文件,holygrail.py和Tim。我还有一个文件夹,里面有两个文件——我们称之为亚瑟和兰斯洛特。当我运行脚本时,得到的是:

holygrail.py
Tim
Arthur
Lancelot

我对holygrail.py和Tim很满意。但亚瑟和兰斯洛特这两个档案,我不想被列出来。


Tags: 文件代码inpyimport目录foros
3条回答

只需使用^{}^{}而不是^{}

示例:

import os
files = [f for f in os.listdir('.') if os.path.isfile(f)]
for f in files:
    # do something

但是在将这个应用到其他目录时要小心,比如

files = [f for f in os.listdir(somedir) if os.path.isfile(f)].

这不会起作用,因为f不是完整路径,而是相对于当前目录。

因此,要在另一个目录上进行筛选,请执行os.path.isfile(os.path.join(somedir, f))

(谢谢您的提示)

import os

destdir = '/var/tmp/testdir'

files = [ f for f in os.listdir(destdir) if os.path.isfile(os.path.join(destdir,f)) ]

您可以为此目的使用os.listdir。如果只希望文件而不希望目录,可以使用os.path.isfile筛选结果。

示例:

files = os.listdir(os.curdir)  #files and directories

或者

files = filter(os.path.isfile, os.listdir( os.curdir ) )  # files only
files = [ f for f in os.listdir( os.curdir ) if os.path.isfile(f) ] #list comprehension version.

相关问题 更多 >