我是Python新手。我有一个名为“ logs”的文件夹,自然地,它们将被分类为文件夹,并且在那些文件夹中,还将存在子类别的子文件夹。现在我的问题是我有一个遍历子目录并获取日志文件夹的函数。
我的问题是为什么下面的代码无法正常工作。我也在else块中获取日志文件夹文件。
def printFiles(directory_path):
for root, _, filenames in os.walk(directory_path):
dirname = os.path.basename(root).strip()
if str(dirname) == 'logs' and len(dirname) == 4:
for filename in filenames:
file_path = os.path.join(root, filename)
withLogFile(file_path)
else:
for filename in filenames:
file_path = os.path.join(root, filename)
withoutLogfile(file_path)
答案 0 :(得分:1)
如果我正确理解了您的问题,那么您的问题是您希望所有文件都位于名为logs的文件夹的任何子目录中。当前,如果代码直接位于文件夹“ logs”中,则您的代码仅将其确定为日志文件。要解决此问题,请更改
dirname = os.path.basename(root).strip()
if str(dirname) == 'logs' and len(dirname) == 4:
到
if 'logs' in root.split('/'):
您当前的代码检查当前目录的最后一部分是否称为“日志”(长度为4,我认为这是多余的)。新代码检查文件夹日志是否在您要查找的目录的文件路径中的任何位置。对“ /”进行分割是为了确保您不会意外击中类似/ blogs的内容。