目录列表在python [英] directory listing in python

查看:184
本文介绍了目录列表在python的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在目录列表中遇到麻烦。请问我有一个目录包含一些子目录(名为a-z,0-9,%, - )。在每个子目录中,我都有一些相关的xml文件。
所以,我必须读取这个文件的每一行。我尝试过以下代码。

  def listFilesMain (dirpath):
for dirname,dirnames,os.walk(dirpath)中的文件名:
dirnames中的subdirname:
os.path.join(dirname,subdirname)
文件名中的文件名:
fPath = os.path.join(dirname,filename)
fileListMain.append(fPath)

只有当我尝试从子目录运行我的程序,但是如果我尝试从主目录运行,则不起作用。这里出了什么问题?
任何一种帮助将不胜感激。谢谢!

解决方案

这样做如何:

 code> def list_files(dirpath):
files = []
for dirname,dirnames,os.walk(dirpath)中的文件名:
文件+ = [os.path.join (dirname,filename)文件名中的文件名]
返回文件

你也可以这样做作为一个生成器,所以列表不是完整存储的:

  def list_files(dirpath ):
for dirname,dirnames,os.walk(dirpath)中的文件名:
文件名中的文件名:
yield os.path.join(dirname,filename)

最后,您可能需要执行绝对路径:

  def list_files(dirpath):
dirpath = os.path.abspath(dirpath)
for dirname,dirnames,os.walk(dirpath)中的文件名:
文件名中的文件名:
yield os.path.join(dirname,filename)

所有这些都可以用以下行来调用:

 code> for filePath in list_files(dirpath):
#检查文件是否是XML文件。
#然后处理文件。


I am getting trouble with directory listing.Suppose, I have a directory with some subdirectory(named as a-z, 0-9, %, -).In each subdirectory, I have some related xml files. So, I have to read each lines of this files.I have tried with the following code.

def listFilesMain(dirpath):
    for dirname, dirnames, filenames in os.walk(dirpath):
        for subdirname in dirnames:
            os.path.join(dirname, subdirname)
        for filename in filenames:
            fPath = os.path.join(dirname, filename)
            fileListMain.append(fPath)

It works only if I tried to run my program from subdirectory, but no results if I tried to run from main directory. What's going wrong here? Any kind of help will be greatly appreciated. Thanks!

解决方案

How about this:

def list_files(dirpath):
    files = []
    for dirname, dirnames, filenames in os.walk(dirpath):
        files += [os.path.join(dirname, filename) for filename in filenames]
    return files

You could also do this as a generator, so the list isn't stored in its entirety:

def list_files(dirpath):
    for dirname, dirnames, filenames in os.walk(dirpath):
        for filename in filenames:
            yield os.path.join(dirname, filename)

Finally, you might want to enforce absolute paths:

def list_files(dirpath):
    dirpath = os.path.abspath(dirpath)
    for dirname, dirnames, filenames in os.walk(dirpath):
        for filename in filenames:
            yield os.path.join(dirname, filename)

All of these can be called with a line like:

for filePath in list_files(dirpath):
    # Check that the file is an XML file.
    # Then handle the file.

这篇关于目录列表在python的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆