2017-03-09 53 views
-1

的代碼如下:Python的縮進錯誤不存在

import glob 
import os 
import shutil 

for file_path in glob.glob(os.path.join(folder, '*Tomo*_[1-100]_*')): 
    new_dir = file_path.rsplit('.', 1)[0] 
    try: 
     os.mkdir(os.path.join(folder, new_dir)) 
#shutil.move(file_path,os.path.join(new_dir,os.path.basename(file_path))) 

的shutil命令當前註釋掉,因爲這是造成一個語法錯誤,我不知道爲什麼。但是當試圖運行這個時,我得到了第10行的縮進錯誤(代碼長度爲9行)。我對我出錯的地方感到不知所措。

回答

6

你剛纔忘了except條款:

import glob 
import os 
import shutil 

for file_path in glob.glob(os.path.join(folder, '*Tomo*_[1-100]_*')): 
    new_dir = file_path.rsplit('.', 1)[0] 
    try: 
     os.mkdir(os.path.join(folder, new_dir)) 
    except Exception as e: 
     pass 
shutil.move(file_path,os.path.join(new_dir,os.path.basename(file_path))) 

編輯:由於syntonym點,是不是一個好主意,只是趕上Exception,爲你的工作使用更好的異常處理程序(在這種情況下,公關obable FileExistsError)。

+3

全面例外幾乎總是一個壞主意,在這裏它也會沉默NameErrors(例如,如果一個變量會拼寫錯誤)或許可錯誤。最好只捕獲一個真正想要捕捉的異常,所以這裏可能是FileExistsError。 – syntonym

+0

@syntonym,確切地說,但這只是他自己 – Netwave

0

try聲明期望在它後面有一個except聲明。

你可以改變你的代碼:

for file_path in glob.glob(os.path.join(folder, '*Tomo*_[1-100]_*')): 
    new_dir = file_path.rsplit('.', 1)[0] 
    try: 
     os.mkdir(os.path.join(folder, new_dir)) 
    except: 
     print "Error joining path" 
     # or simply 
     pass 
0

Python的期待except聲明line 10