使用递归代码,我想要 return 一组 2 个值(总文件、文件夹)
Using the recursive code, I want to return a set of 2 values (total files, folders)
我编写的这个程序没有使用 os.walk()、glob 或 fnmatch,这是有意为之的。它查看指定目录中的目录和所有子目录和文件,以及 return 那里有多少文件 + 文件夹。
import os
def fcount(path):
count = 0
'''Folders'''
for f in os.listdir(path):
file = os.path.join(path, f)
if os.path.isdir(file):
file_count = fcount(file)
count += file_count + 1
'''Files'''
for f in os.listdir(path):
if os.path.isfile(os.path.join(path, f)):
count += 1
return count
path = 'F:\'
print(fcount(path))
我得到的示例输出是目录 F 给了我 700
总共 700 个文件和文件夹。
我现在想做的是使用这段代码,当然有一些修改,调用 fcount('F:\')
和 return 一个集合 (total files, folders)
.
我想要的输出示例是:(700, 50)
。 700
是 files + folders
而 50
只是 folders
.
我不知道该怎么做。
保留两个计数并将它们return作为一个元组:
total_count = dir_count = 0, 0
# .. increment either as needed
return total_count, dir_count
您只需要循环 os.listdir()
一次;您已经检测到某个东西是文件还是目录,所以只需在一个循环中区分它:
def fcount(path):
total_count = dir_count = 0
for f in os.listdir(path):
file = os.path.join(path, f)
if os.path.isdir(file):
recursive_total_count, recursive_dir_count = fcount(file)
# count this directory in the total and the directory count too
total_count += 1 + recursive_total_count
dir_count += 1 + recursive_dir_count
elif if os.path.isfile(file):
total_count += 1
return file_count, total_count
path = 'F:\'
print(fcount(path))
最后的 print()
然后打印一个包含计数的元组;你总是可以把它们分开:
total_count, dir_count = fcount(path)
print('Total:', total_count)
print('Directories:', dir_count)
我编写的这个程序没有使用 os.walk()、glob 或 fnmatch,这是有意为之的。它查看指定目录中的目录和所有子目录和文件,以及 return 那里有多少文件 + 文件夹。
import os
def fcount(path):
count = 0
'''Folders'''
for f in os.listdir(path):
file = os.path.join(path, f)
if os.path.isdir(file):
file_count = fcount(file)
count += file_count + 1
'''Files'''
for f in os.listdir(path):
if os.path.isfile(os.path.join(path, f)):
count += 1
return count
path = 'F:\'
print(fcount(path))
我得到的示例输出是目录 F 给了我 700
总共 700 个文件和文件夹。
我现在想做的是使用这段代码,当然有一些修改,调用 fcount('F:\')
和 return 一个集合 (total files, folders)
.
我想要的输出示例是:(700, 50)
。 700
是 files + folders
而 50
只是 folders
.
我不知道该怎么做。
保留两个计数并将它们return作为一个元组:
total_count = dir_count = 0, 0
# .. increment either as needed
return total_count, dir_count
您只需要循环 os.listdir()
一次;您已经检测到某个东西是文件还是目录,所以只需在一个循环中区分它:
def fcount(path):
total_count = dir_count = 0
for f in os.listdir(path):
file = os.path.join(path, f)
if os.path.isdir(file):
recursive_total_count, recursive_dir_count = fcount(file)
# count this directory in the total and the directory count too
total_count += 1 + recursive_total_count
dir_count += 1 + recursive_dir_count
elif if os.path.isfile(file):
total_count += 1
return file_count, total_count
path = 'F:\'
print(fcount(path))
最后的 print()
然后打印一个包含计数的元组;你总是可以把它们分开:
total_count, dir_count = fcount(path)
print('Total:', total_count)
print('Directories:', dir_count)