【问题标题】:Apply script to multiple folders using string in file path [duplicate]使用文件路径中的字符串将脚本应用于多个文件夹[重复]
【发布时间】:2021-12-21 17:55:19
【问题描述】:

我是编程世界的新手,我在一段代码上遇到了障碍。

我有什么:我有一段代码可以识别所有 .MP4 文件并计算目录中文件的大小。到目前为止,我只能将此代码应用于我手动输入的特定文件夹。但代码有效。

问题:我想将我所拥有的应用到一个目录中的多个文件夹。我在文件路径中有几个文件夹,我想将此代码分别应用于每一年。例如:我需要一段代码/代码方向,可以让我在名称中包含“2021”的所有文件夹上运行此代码。

欢迎任何指点或建议。

# import module
import os

# assign size
size = 0

# assign folder path
Folderpath = r'C:\file_path_name_here'

# get size
for path, dirs, files in os.walk(Folderpath):
    for f in files:
        if not f.endswith('.MP4'):
            continue
        else:
            fp = os.path.join(path, f)
            size += os.path.getsize(fp)

# display size
print("Folder size: " + str(size))

【问题讨论】:

  • 你试过“glob”功能吗?它将列出所有具有共同模式的文件。在您的情况下,您可以使用 glob.glob("*.MP4")
  • 感谢您的回复@GIOVANNIQUINONESVALDEZ。我不相信这会以我需要的方式工作。最终结果是让我知道给定年份内所有 .MP4 文件的大小,而不仅仅是所有年份的总和。
  • 但是使用 glob,您可以列出所有 MP4 文件,然后您可以使用 os.path.getsize 函数单独获取每个文件的大小。 >> glob.glob("*.MP4") [file1.MP4, file2.MP4, ..., fileN.MP4]
  • 感谢您的建议。我正在使用 .rglob 获取所需的文件,但是当我尝试确定文件的大小时,我得到“WindowsError:[错误 2] 系统找不到指定的文件:'specificfilename.mp4'”。看来我需要找到一种方法来提取完整​​的文件路径而不仅仅是名称。

标签: python


【解决方案1】:

您可以为此使用glob。 如果我对您的理解正确,您想遍历所有文件夹对吗? 我自己也不是一个常规的编码器,但我将它用于一个脚本,我必须迭代未知数量的文件和文件夹。在我的情况下PDF 然后被扫描/索引/合并...

这显然会返回一个文件列表,您可以使用这些文件处理os.path commonpath 也很方便。

def getpdflisting(fpath):
    filelist = []
    for filepath in Path(os.path.join(config['Ordner']['path'] +\
            fpath)).glob('**/*.pdf'):
        filelist.append(str(filepath))
    if filelist:
        filelist = [x for x in filelist if x]
    logger.info(filelist)
    return filelist

或者更好https://stackoverflow.com/a/66042729/16573616

【讨论】:

  • 感谢您的回复 crpb。只是为了检查我是否理解我可以使用 .glob 收集名称中包含 20xx 年的所有文件夹然后将其插入 #assign folder path Folderpath = r'C:\file_path_name_here' 元素的概念?
  • 好的,我以为它们会被排序..看看这里匹配 20\d{2} - stackoverflow.com/a/51246151/16573616
猜你喜欢
  • 1970-01-01
  • 2020-11-14
  • 1970-01-01
  • 1970-01-01
  • 2019-09-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多