2016-06-22 9 views
0

私はあるフォルダから別のフォルダに基本的なバックアップスクリプトを書き込もうとしていますが、それを動作させましたが、ディレクトリ構造はコピーされませんでした。例えば、c:\temp\docs\file.txtd:\temp\docs\file.txtだけではなくd:\temp\file.txtpythonスクリプトがif文の字下げブロックを予想しました

私の問題は私のif/else文でインデントに存在しますが、すべてが私にはよさそうに行くように、私は、同様サブフォルダにコピーしようとしています。私は間違って何をしていますか?ここで

import datetime, time, string, os, shutil 

COPY_FROM_LOCATION = 'C:\\xampp\\htdocs\\projects' 
folder_date = time.strftime("%Y-%m-%d") 
BACKUP_TO_LOCATION = 'D:\\BACKUP\\' + folder_date 

#Create a new directory in D:\BACKUP based on today's date so the folder you're trying to copy to actually exists: 
if not os.path.exists(BACKUP_TO_LOCATION): 
    os.makedirs(BACKUP_TO_LOCATION) 

#copy function 
def backup(source_folder, target_folder): 
    for subdir, dirs, files in os.walk(source_folder): 
     if subdir == source_folder : 
      new_target_folder = target_folder 
     else: 
      folder_name = subdir.split("C:\\xampp\\htdocs\\projects\\",1)[-1] 
      new_target_folder = target_folder + "\\" + folder_name 
     for file in files: 
      print "backing up: " + folder_name 
      shutil.copy2(os.path.join(subdir, file), new_target_folder) 

backup(COPY_FROM_LOCATION,BACKUP_TO_LOCATION) 

は私が取得していますエラーです:

File "backup.py", line 15 
    new_target_folder = target_folder 
        ^
IndentationError: expected an indented block 
+2

タブとスペースをミックスしていますか? – SuperSaiyan

+0

リンターを使いたいかもしれません。コードを読みやすくし、PEPに準拠させるようにしてください。私はあなたのコードに問題がないと思うので、タブとスペースがインデントとして散在していると問題になると思います。 –

答えて

4

変化

if subdir == source_folder : 

あなたは、タブとスペースを混在さです。

enter image description here

どちらか一方ではなく、両方を使用してください。好ましくはスペース。

+0

yup。聖なるものすべての愛のために、私は私の髪を引き出しようとしていました! –

0

は、セミコロンの前にアップスペースとすごみとは何ですか?私はそれが前にその方法で行われたことを見ていない、それはこのスクリプトが窒息しているように見える。

if subdir == source_folder: 
+0

いいえ、コロンの前にスペースを入れても構いません。それは問題ではありません。 – Kevin

+0

これを修正しようとしましたが、何らかの形で改行文字と空白が混乱し、この字下げエラーが発生します。このスクリプトをどこかからコピー&ペーストしましたか? –

1

このエラーは、通常、インデントにエラーがあることを意味します。あなたはのタブとのスペースを混在させないでください。を確認してください。

https://www.pylint.org/を使用して検出することもできますし、単純なコードでhttp://pep8online.comを貼り付けるだけで、改善できるものが表示されます。

関連する問題