python os.path.dir 例子
python os.path.dir example
我在 Udacity 上看了一个关于深度学习的在线课程,这个概念是一个简单的分类 not_Mnist dataset.Everything 解释得太好了,但我对其中的部分内容有点困惑如果您有时间帮助我,代码 given.I 将不胜感激!
例如我们有一个 'notMNIST_large.tar.gz' file
。
所以一开始我们去掉.tar.gz
,根是root = notMNIST_large
。之后我们检查是否已经有这个 name.If 的目录,而不是我们从 'notMNIST_large.tar.gz' file
中提取子文件夹,这是我有点困惑的地方......
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()
的结果并收集 predicate
为 True
的那些项目。它将 thing()
应用于这些条目,并在 data_folders
.
中收集结果列表
此处,something
是当前目录中文件的列表,predicate
检查该项目是否是目录(而不是,例如,常规文件); thing
是 os.path.join(root,d)
即我们在提取的条目前面添加回 root
目录。
因此,在这种情况下,代码会检查子目录的数量是否与 class 的数量相同(大概每个子目录包含一个 class)。
我在 Udacity 上看了一个关于深度学习的在线课程,这个概念是一个简单的分类 not_Mnist dataset.Everything 解释得太好了,但我对其中的部分内容有点困惑如果您有时间帮助我,代码 given.I 将不胜感激!
例如我们有一个 'notMNIST_large.tar.gz' file
。
所以一开始我们去掉.tar.gz
,根是root = notMNIST_large
。之后我们检查是否已经有这个 name.If 的目录,而不是我们从 'notMNIST_large.tar.gz' file
中提取子文件夹,这是我有点困惑的地方......
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()
的结果并收集 predicate
为 True
的那些项目。它将 thing()
应用于这些条目,并在 data_folders
.
此处,something
是当前目录中文件的列表,predicate
检查该项目是否是目录(而不是,例如,常规文件); thing
是 os.path.join(root,d)
即我们在提取的条目前面添加回 root
目录。
因此,在这种情况下,代码会检查子目录的数量是否与 class 的数量相同(大概每个子目录包含一个 class)。