2013-12-03 4 views
0

enter code here Im помощью Eclipse, с PyDev и пытается получить простую работу скрипта:Python Traceback: нет ошибок, но не выход из сценария

Edited Код:

import time 
import os 
import json 
import tarfile 
source_config='/Users/brendanryan/scripting/brendan.json' 
backup_dir = '/myapp/target/' 

def main(): 

     with open(source_config) as f: 
       data = json.load(f) 
       for entry in data["source_include"]: 
        #base_filename = os.path.basename(entry) 
        #source_dirs = [ name for name in os.listdir(entry) if os.path.isdir(os.path.join(entry, name)) ] 
        full_dir = os.path.join(entry) 
        tar = tarfile.open(os.path.join(backup_dir, '.tar.gzip'), 'w:gz') 
        tar.add(full_dir) 
        tar.close() 

if __name__ == '__main__': 
     main() 

JSON:

{ 
    "source_type": "folder", 
    "tar_type": "gzip", 
    "tar_max_age": "10", 
    "source_include": ["/myapp/conf", "/myapp/db"], 
    "target_path": "/myapp/target" 
} 

Это ПОДДЕРЖИВАЕТСЯ для работы. Но это не так. Когда код был сломан, у меня были все виды Tracebacks для работы с ... и я имею в виду все. Теперь я просто получаю «» ... никаких ошибок, никакого вывода, никакого результата .tar.gz, ничего нечего, когда я его запускаю. Иди, желай попробовать НИКАКОГО, чтобы заставить это работать прямо сейчас ...

Для непосвященных это должно прочитать json (которые являются переменными) и использовать это для выбора исходных папок, затем tar.gz их и поместить полученные архивы в другую папку. Я не знаю, как это сделать, но было бы здорово просто взять ВСЕ папки в «source_include», tar.gz и называть его текущей датой. Это было бы круто!

Редактировать: Добавлено main() ... СПАСИБО! Итак, с редактированием, отслеживание теперь:

Редактировать СНОВА: И ТЕПЕРЬ, НИКАКИЕ СЛЕДЫ. Еще раз. Нет выхода ...

Язык нецензурной брали (Eclipse говорит, что код сейчас классный) ... но без вывода. Все, как ни в одном резутантном архиве. В исходную точку.

+1

Показать следы. При выполнении сценария должен быть только один. Это * неоценимая * информация. –

+0

вы должны использовать 'json.load (f)' вместо 'json.loads (f)' (без 's'). [doc] (http://docs.python.org/2/library/json.html#json.load) – sheh

+0

Исправлены очевидные ошибки, такие как main() в соответствии с Mr Roseman, а также tar.add (tar), который должен быть tar.add (full_dir). Добавлена ​​новая трассировка. Эта отладка убивает меня! – Brendan

ответ

4

На самом деле вы фактически не вызываете функцию main. Чтобы вызвать функцию, вам необходимо использовать круглые скобки: main().

(И вы не должны поймать исключение, если все, что вы собираетесь сделать, это напечатать бесполезно консервированный сообщение. Лучше пусть исключение распространяется, так что вы можете увидеть, что на самом деле происходит не так.)

+0

Я начинаю чувствовать БОЛЬШЕ как новичок ..: (... Простите меня, я преподаю себе это ... сначала РЕАЛЬНЫЙ язык с ужасного опыта VB! – Brendan

+0

Исключение удалено, согласно предложению :) – Brendan

0

ValueError: Expecting , delimiter: line 6 column 2 (char 120 говорит у меня в вашем файле JSON есть ошибка.

JSON: 
{ 
    "source_type": "folder", 
    "tar_type": "gzip", 
    "tar_max_age": "10", 
    "source_include": ["/myapp/conf", "/myapp/db"], !!!COMMA GOES HERE 
    "target_path": "/myapp/target" 
} 
+0

Исправлено. Редактировал файл wong :(Теперь я получаю «Bad Operand Typ для Unary +:« str ». Freaky! – Brendan

+0

запятая и + здесь назад« tar = tarfile.open (os.path.join (backup_dir, base_filename, + '.tar.gzip »),' w: gz ') '. Ваша трассировка стека должна рассказать вам, что такое ошибка, и в какой строке она произошла, если у вас есть другие ошибки кода. – IceArdor

+0

Итак, я отредактировал и добавил новый JSON и код. и нет архива ... Im вытягиваю мои волосы, и я не имею m Уч !! – Brendan