2014-02-11 116 views
2

我正在運行以下代碼(最終)從一系列jpeg中創建視頻,jpeg處於如下文件結構中:/year/month/day/hour/minute.jpg ,我有一個小型的python腳本來將每個文件從一整天(按時間順序)移動到0000.jpg,0001.jpg等格式的另一個文件中。這很奇妙,但for循環之後沒有任何執行(for例如,「HELLO」不會打印出來。這裏有什麼問題?for循環後沒有執行

#!/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") 
+1

一世 不要用Python編程,但是在調試循環時,很高興看到發生了什麼。如果可以,請在'index + = 1'之後的內部循環內輸出一些數據到文件(或屏幕?)。如果我是你,我會輸出dpS和cpD。看看他們是否顯示你的期望,並結束你的期望。 – BrettFromLA

+0

你確定循環沒有掛在它的一個任務上嗎?您可以嘗試的一種粗略的調試類型是添加在內部for-loop中打印兩個值「文件夾」和「文件」的語句,然後在內部for-loop結尾處添加一些語句以確保它通過所有內容。 – JonathanV

+0

另一個想法 - 如果'shutil.copyfile(cpS,cpD)'找不到文件,它會拋出錯誤嗎?或者只是停止?如果它剛剛停止,循環中的最後一個文件可能會丟失,但在您看來,程序剛剛停止而沒有打印(「HELLO」)。 – BrettFromLA

回答

0

最終的目錄不包含anim.gif文件,所以最後一次迭代拋出異常,程序悄悄打破。