干杯大家,
我需要python 3.6的帮助。所以我有这样的数据结构:
|main directory
| |subdirectory's(plural)
| | |.wav files
我目前正在主目录所在的目录下工作,所以我不需要在此之前指定路径。首先,我想遍历主目录,找到所有子目录。然后我想在他们每一个人身上找到。wav文件,当处理完这些文件后,我想转到下一个子目录,以此类推,直到它们都被打开。处理wav文件。这正是我想做的。wav文件被输入到我的程序中,处理它们,这样我就可以把它们转换成numpy数组,然后我把numpy数组转换成一些其他的对象(准确的说是tensorflow,我想转换成TF对象)。我写了整个过程,如果有人有任何快速的建议,为什么不呢?我试着用for循环这样做:
for subdirectorys in open(data_path, "r"):
for files in subdirectorys:
#doing some processing stuff with the file
问题是,它总是会引发错误13,在我给他的数据路径上显示的权限被拒绝,但当我转到那里的属性时,似乎没问题,所有权限都很好。我尝试了一些其他方法,比如使用os。open或i将for循环替换为:
with open(data_path, "r") as data:
并且它总是引发权限被拒绝错误。os.walk以某种方式工作,但它不是我需要的,当我试图修改它时,我没有给出错误,但它也没有做任何事情。只是说我不是任何专业的python程序员,所以我可能错过了一个显而易见的东西,但是,我在这里问和学习。我也看到了很多类似的问题,但他们主要集中在。txt文件,而不是具体在我的情况下,所以我需要在这里问它。无论如何,先谢谢你的帮助。
import glob
import os
main = '/main_wavs'
wavs = [w for w in glob.glob(os.path.join(main, '*/*.wav')) if os.path.isfile(w)]
就路径a/B/C上的权限而言,a、B和C必须都是可访问的。对于意味着读取权限的文件。对于目录,它意味着读取和执行权限(列出内容)。
编辑:如果你想要一个glob的例子(更理智),这里是:
from pathlib import Path
# The pattern "**" means all subdirectories recursively,
# with "*.wav" meaning all files with any name ending in ".wav".
for file in Path(data_path).glob("**/*.wav"):
if not file.is_file(): # Skip directories
continue
with open(file, "w") as f:
# do stuff
有关详细信息,请参见<code>路径。glob()。手套图案是一件很有用的事情。
上一个答案:
尝试使用格洛布或 os.walk()
。下面是一个示例
。
from os import walk, path
# Recursively walk the directory data_path
for root, _, files in walk(data_path):
# files is a list of files in the current root, so iterate them
for file in files:
# Skip the file if it is not *.wav
if not file.endswith(".wav"):
continue
# os.path.join() will create the path for the file
file = path.join(root, files)
# Do what you need with the file
# You can also use block context to open the files like this
with open(file, "w") as f: # "w" means permission to write. If reading, use "r"
# Do stuff
请注意,您可能对open()
的作用感到困惑。它打开一个文件以进行读取、写入和附加。目录不是文件,因此无法打开。
我建议你谷歌文档,并做更多关于所用函数的阅读。文档将比我提供更多的帮助。
另一个很好的答案可以更详细地解释在这里看到。
如何仅在目录中迭代文本文件?到目前为止,我所拥有的是; 这是可行的,但是我必须将.py文件存储在同一个目录(文件夹)中才能使其运行,因此迭代包含了.py文件本身。理想情况下,我想指挥的是:; “查看此子目录/文件夹,并循环访问其中的所有文件” 或。。。 我确信我要求的东西相当直截了当,但我不知道如何继续。可能值得我强调的是,我通过反复试验获得了glob模块,因此,如果这是绕过此特定方法的错误方法,
我想从一个目录下从某些字母开始的所有文件中提取数据。如上所示,当我遍历目录并打印每个符合的文件名时,我得到一列文件名(字符串)。同时,工作得非常好。但是,运行以下代码只会返回错误。为什么找不到文件?我该怎么做才能解决这个问题?
问题内容: 请向我解释,为什么当我运行这段代码时,一切都很好,并且我得到了类的父目录: 当我运行此代码时: 我在dirUrl中为 空 。 我这样尝试: 都一样,dirUrl中为 null 。 如何在Java中获取parent / parent / parent …目录? 问题答案: 注意 : 正如其他人已经说过的那样,将任何功能都基于某些父目录的检索是一个非常糟糕的设计思想(而且几乎肯定也会失败)
问题内容: 我正在寻找一种方法来获取给定目录中所有目录的名称,而不是文件。 例如,假设我有一个名为的文件夹,并且在其中有3个文件夹: 和。 我想获取文件夹的名称,但不关心内容或Child1,Child2等内的子文件夹的名称。 有没有简单的方法可以做到这一点? 问题答案: 您可以使用列出所有文件名,然后使用循环检查每个子文件并使用函数获取子目录。 例如:
问题内容: 使用此代码 返回特定目录中文件夹和文件的总和,而不用关心 子目录 。我想获取目录及其子目录中所有文件的数量。 PS:返回所有文件和文件夹的总和几乎无关紧要。 任何帮助表示赞赏,谢谢 问题答案: 试试这个。 它可能会帮助您。