【问题标题】:Nothing executed after for loopsfor 循环后没有执行任何操作
【发布时间】:2014-02-11 00:25:11
【问题描述】:

我正在运行以下代码(最终)从一系列 jpeg 中创建视频,jpeg 的文件结构如下:/year/month/day/hour/minute.jpg,我有一个小python 脚本将每个文件从一整天(按时间顺序)移动到另一个格式为 0000.jpg、0001.jpg 等的文件。这非常有效,但是在 for 循环之后不会执行任何内容(例如,“HELLO”不会打印出来。这里有什么问题?

#!/usr/bin/env python
import os, time, shutil
print("Content-type: text/plain\n")
os.chdir("../")

def comp(x, y):
    return int(x) - int(y)

def comp2(x, y):
    return int(x[:-4]) - int(y[:-4])

cwd=os.getcwd()
srcdir=cwd + "/cams/droid/archive/images/" + time.strftime("%Y/%m/%d")
hours=os.listdir(srcdir)
hours=sorted(hours, cmp=comp)
destdir=cwd + "/cgi-bin/images"
index=0

for folder in hours:
    minutes=os.listdir(srcdir + "/" + folder)
    minutes.remove("anim.gif")
    minutes=sorted(minutes, cmp=comp2)
    for files in minutes:
        cpS='%s/%s/%s'%(srcdir, folder, files)
        cpD='%s/%04d.jpg'%(destdir, index)
        shutil.copyfile(cpS, cpD)
        index+=1

print("HELLO")

【问题讨论】:

  • 我不会用 Python 编程,但是在调试循环时,最好看看发生了什么。如果可以,在index+=1 之后的内部循环中将一些数据输出到文件(或屏幕?)。如果我是你,我会输出 dpS 和 cpD。看看它们是否显示了您的期望,并在您期望的地方结束。
  • 您确定循环没有挂在其中一项任务上吗?您可以尝试的一种粗略的调试类型是在内部 for 循环中添加打印两个值“文件夹”和“文件”的语句,然后在该内部 for 循环的末尾添加一些语句以确保它通过所有内容.
  • 另一个想法 - 如果shutil.copyfile(cpS, cpD) 找不到文件,它会抛出错误吗?还是停下来?如果它只是停止,则循环中的最后一个文件可能会丢失,但在您看来程序只是停止而没有打印(“HELLO”)。
  • 哈哈 - @JonathanV 和我想出了同样的想法!
  • @BrettFromLA 我刚刚完成对我的帖子进行校对,就看到有人打败了我!

标签: python for-loop cgi


【解决方案1】:

最终目录不包含anim.gif 文件,因此最后一次迭代抛出异常,程序静默中断。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-02-12
    • 1970-01-01
    • 2021-06-27
    • 1970-01-01
    • 2021-11-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多