Directory 遍历文件夹,然后遍历子文件夹,并打印带有文本文件路径的文件名
我正在尝试使用python创建批处理运行其他软件所需的文件。 为此,我需要生成一个文本文件,将所需的数据文件加载到软件中。 我的问题是,我需要输入此文本文件的文件存储在一组结构化文件夹中 我需要循环一组文件夹(最多20个),每个文件夹最多可以包含3个以上的文件夹,其中包含我需要的文件。文件夹的底层包含软件每次运行所需的一组文件。文本文件应逐行打印这些文件的路径+名称,添加一条指令行,然后从文件夹移动到下一组文件,依此类推,直到选中所有子级文件夹。使用os.walk()。下面将输出“dir”子目录中所有文件的列表。可以根据您的需要对结果进行操作:Directory 遍历文件夹,然后遍历子文件夹,并打印带有文本文件路径的文件名,directory,python-2.6,subdirectory,Directory,Python 2.6,Subdirectory,我正在尝试使用python创建批处理运行其他软件所需的文件。 为此,我需要生成一个文本文件,将所需的数据文件加载到软件中。 我的问题是,我需要输入此文本文件的文件存储在一组结构化文件夹中 我需要循环一组文件夹(最多20个),每个文件夹最多可以包含3个以上的文件夹,其中包含我需要的文件。文件夹的底层包含软件每次运行所需的一组文件。文本文件应逐行打印这些文件的路径+名称,添加一条指令行,然后从文件夹移动到下一组文件,依此类推,直到选中所有子级文件夹。使用os.walk()。下面将输出“dir”子目录
import os
def list_files(dir):
r = []
subdirs = [x[0] for x in os.walk(dir)]
for subdir in subdirs:
files = os.walk(subdir).next()[2]
if (len(files) > 0):
for file in files:
r.append(os.path.join(subdir, file))
return r
对于Python3,将
next()
更改为\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。由os.walk()生成的每个项(请参见)都是由三个项组成的元组。这些项目是:
工作目录
命名工作目录中存在的任何子目录的字符串列表
工作目录中存在的文件列表
知道了这一点,Charles的大部分代码都可以通过修改forloop进行压缩:
import os
def list_files(dir):
r = []
for root, dirs, files in os.walk(dir):
for name in files:
r.append(os.path.join(root, name))
return r
这将有助于列出特定的文件扩展名。在我的子文件夹中,我有许多文件,但我只对拼花地板文件感兴趣
import os
dir = r'/home/output/'
def list_files(dir):
r = []
for root, dirs, files in os.walk(dir):
for name in files:
filepath = root + os.sep + name
if filepath.endswith(".snappy.parquet"):
r.append(os.path.join(root, name))
return r
那么,根和目录的差异是什么?我应该为dir写什么?我要浏览的所有子文件夹的父文件夹,对吗?此代码不适用于我:(返回空数组…@alwaysaskingquestionsroot
是由os生成的元组的第一项。walk()
dir
是您要迭代的文件的目录。在我的答案代码中,子文件夹(由元组项dirs
指示)忽略。仅使用文件及其根目录。只需使用列表理解:返回[os.path.join(r,n)表示r,\uf表示os中的f。walk(dir)表示f中的n]
。