【问题标题】:Loop through files in a folder one by one逐个循环浏览文件夹中的文件
【发布时间】:2020-09-05 18:18:07
【问题描述】:

大家好,我写的脚本有个小问题。

import os
import glob

def loop_dir():
   for file in glob.glob('/Users/++++/+++/test/*.mp4'):
       return str(file).split('/')[-1]


def mk_dir():
    i=1
    keepGoing=True
    while keepGoing:
      path = "Folder_{}/".format(i)
      if not os.path.exists(path):
        os.makedirs(os.path.dirname("Folder_{}/".format(i)), exist_ok=False)
        keepGoing = False
      i += 1
    return str(path)

with os.scandir('/Users/++++/++++/test') as it:
        for vid in it:
            os.system('python3 video2images.py \.    #here goes the filename
                        -i /Users/++++/++++/test/' + loop_dir() + ' \
                        -o /Users/++++/++++/' + mk_dir() + ' \
                        --sample_interval 2 \
                        --max_frames 100')

我想在这里做的是让第一个函数一个接一个地返回目录中的文件名,这样它们就可以插入到底部的最后一个块中。 我尝试了几个选项os.listdir() os.scandir() glob.iglob(),但我无法解决我的问题。目前,代码总是使用相同的文件名循环。

提前感谢您的帮助!

【问题讨论】:

    标签: python python-3.x loops directory filenames


    【解决方案1】:

    它返回一个文件的原因是因为logical error你在循环中。

    我建议您将找到的文件附加到 array 然后返回数组。然后,您可以访问数组中的文件。

    def loop_dir():
       files=[]
       for file in glob.glob('/Users/++++/+++/test/*.mp4'):
           files.append(str(file).split('/')[-1])
       return files
    

    【讨论】:

      猜你喜欢
      • 2010-12-20
      • 1970-01-01
      • 1970-01-01
      • 2015-12-07
      • 1970-01-01
      • 2012-05-09
      • 1970-01-01
      相关资源
      最近更新 更多