【发布时间】: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 我刚刚完成对我的帖子进行校对,就看到有人打败了我!