gpt4 book ai didi

python os.path.dir 示例

转载 作者:行者123 更新时间:2023-12-01 02:21:37 26 4
gpt4 key购买 nike

我正在 Udacity 观看一门关于深度学习的在线类(class),这个概念是对 not_Mnist 数据集的简单分类。一切都解释得很好,但我对给出的部分代码有点困惑。如果您愿意,我将不胜感激有时间帮帮我吧!例如,我们有一个'notMNIST_large.tar.gz'文件。因此,首先我们删除.tar.gz,根目录为root = notMNIST_large。之后,我们检查是否已经存在具有该名称的目录。如果没有,我们从 'notMNIST_large.tar.gz' 文件中提取子文件夹,这就是我有点困惑的地方......

 num_classes = 10
np.random.seed(133)

def maybe_extract(filename, force=False):
root = os.path.splitext(os.path.splitext(filename)[0])[0] # remove .tar.gz
if os.path.isdir(root) and not force:
# You may override by setting force=True.
print('%s already present - Skipping extraction of %s.' % (root, filename))
else:
print('Extracting data for %s. This may take a while. Please wait.' % root)
tar = tarfile.open(filename)
sys.stdout.flush()
tar.extractall(data_root)
tar.close()
data_folders = [
os.path.join(root, d) for d in sorted(os.listdir(root))
if os.path.isdir(os.path.join(root, d))]
if len(data_folders) != num_classes:
raise Exception(
'Expected %d folders, one per class. Found %d instead.' % (
num_classes, len(data_folders)))
print(data_folders)
return data_folders

train_folders = maybe_extract(train_filename)
test_folders = maybe_extract(test_filename)

所以如果可能的话我想对此部分进行解释

data_folders = [
os.path.join(root, d) for d in sorted(os.listdir(root))
if os.path.isdir(os.path.join(root, d))]
if len(data_folders) != num_classes:
raise Exception(
'Expected %d folders, one per class. Found %d instead.' % (
num_classes, len(data_folders)))

最佳答案

它收集子目录列表并检查是否有预期的数量。

data_folders = [thing(d) for d in something() if predicate(d)]

是一个列表理解,它循环遍历something()的结果并收集predicateTrue<的那些项目。它将 thing() 应用于这些条目,并将结果列表收集到 data_folders 中。

这里,something 是当前目录中的文件列表,predicate 检查该项目是否是一个目录(而不是常规文件) ); thingos.path.join(root,d) 即我们在提取的条目前面添加回 root 目录。

因此,在本例中,代码检查子目录的数量是否与类的数量相同(假设每个子目录都包含一个类)。

关于python os.path.dir 示例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47907306/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com