Форум сайта python.su
0
Всем привет в общем такое дело уже перечитал много документации по python и все становится на свои места но вот сразу тупик есть такой участок кода
import os import sys import gtk import time import gobject import traceback from threading import Timer from foobnix.fc.fc import FC from foobnix.util import LOG, analytics from foobnix.fc.fc_helper import CONFIG_DIR def foobnix(): if "--debug" in sys.argv: for param in sys.argv: if param.startswith("--log"): if "=" in param: filepath = param[param.index("=")+1 : ] if filepath.startswith('~'): filepath = os.path.expanduser("~") + filepath[1 : ] else: filepath = os.path.join(CONFIG_DIR, "foobnix.log") LOG.setup("debug", filename=filepath) else: LOG.setup("debug") LOG.print_platform_info() else: LOG.setup("error") from foobnix.regui.foobnix_core import FoobnixCore if "--test" in sys.argv: from test.all import run_all_tests print ("""TEST MODE""") result = run_all_tests(ignore="test_core") if not result: raise SystemExit("Test failures are listed above.") exit() init_time = time.time() if "--nt" in sys.argv or os.name == 'nt': gobject.threads_init() #@UndefinedVariable core = FoobnixCore(False) core.run() analytics.begin_session() print ("******Foobnix run in", time.time() - init_time, " seconds******") gtk.main() else: init_time = time.time() from foobnix.regui.controls.dbus_manager import foobnix_dbus_interface iface = foobnix_dbus_interface() if "--debug" in sys.argv or not iface: print ("start program") gobject.threads_init() #@UndefinedVariable core = FoobnixCore(True) core.run() analytics.begin_session() #core.dbus.parse_arguments(sys.argv) analytics.begin_session() print ("******Foobnix run in", time.time() - init_time, " seconds******") if sys.argv: Timer(1, gobject.idle_add, [core.check_for_media, sys.argv]).start() gtk.main() else: print (iface.parse_arguments(sys.argv)) if "--profile" in sys.argv: import cProfile cProfile.run('foobnix()') else: try: foobnix() analytics.end_session() except Exception, e: analytics.end_session() analytics.error("Main Exception"+str(e)) exc_type, exc_value, exc_traceback = sys.exc_info() traceback.print_exception(exc_type, exc_value, exc_traceback, file=sys.stdout) FC().save()
if "--debug" in sys.argv: for param in sys.argv: if param.startswith("--log"): if "=" in param: filepath = param[param.index("=")+1 : ] if filepath.startswith('~'): filepath = os.path.expanduser("~") + filepath[1 : ] else: filepath = os.path.join(CONFIG_DIR, "foobnix.log") LOG.setup("debug", filename=filepath) else: LOG.setup("debug") LOG.print_platform_info() else: LOG.setup("error")
Офлайн
857
serrrgggeeesys.argv - это список аргументов командной строки
как я понимаю –debug ' это строка которая должна попасть в переменную sys.argv только как она туда попадет не совсем понятно на каком этапе
script.py a b c --debug
['script.py', 'a', 'b', 'c', '--debug']
serrrgggeeesys.argv - это просто список строк
даелее param это тоже наверное переменая уже в argv
>>> for p in ['ab', 'bc', 'cd']: ... print(p) ... ab bc cd >>>
serrrgggeeeберётся аргумент (строка) и проверяется на наличие –log в начале
if “=” in param: это вообще не ясно проверяется на наличе = или я чтото не доганяю
Отредактировано py.user.next (Апрель 23, 2014 22:48:58)
Офлайн
0
спасибо очень разъяснительные ответы, не могли бы что нибудь порекомедавать, что нибудь ближе к практике, учебников много хороших но как правило они все общие понятию дают. И еще допустим я запускаю программу
python test.py
Офлайн
857
serrrgggeeeв sys.argv окажется
ясное дело что никаких аргументов нет так каким путем ити аргументы попадут в sys.argv
['test.py']
serrrgggeeeя про argv узнал в K&R2 (основная книга по C)
спасибо очень разъяснительные ответы, не могли бы что нибудь порекомедавать, что нибудь ближе к практике, учебников много хороших но как правило они все общие понятию дают
python test.py
serrrgggeeeближе к практике - модуль getopt, он уже всё раскладывает и довольно прост (можно за день его полностью освоить)
что нибудь ближе к практике
Отредактировано py.user.next (Апрель 24, 2014 01:42:33)
Офлайн