python os.path.dir 示例

标签 python deep-learning os.path

我正在 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/

相关文章:

python - 从 python 中的列表生成一个随机的、等概率的组合

machine-learning - 如何用caffe实现maxout?

python - 如何在目录中的所有文件类型中搜索正则表达式

python - 从 python 脚本更改目录 : how to not open a new shell

python - 将 RGB 数组转换为 HSL

python - 值错误 : too many values to unpack (expected 2) errors

python - 如何使用 imwrite 从一个文件夹中获取图像并使用 Opencv 将它们保存到另一个文件夹?

machine-learning - TensorFlow 上的简单网络

python - 将字符串转换为路径对象

python - 如何在 python 中重新格式化字符串?