... nicht ansehen kann.
hallöchen, die Problemstellung klingt zunächst kryptisch, aber ich erklär erst mal. Wir sind gerade am modifizieren des Computerspiels "World in Conflict". Dabei haben wir eine Python-Schnittstelle zum Spiel. Somit können wir durch Python-Skripte das Spiel verändern. Leider haben die Macher nicht alle Skripte mitgeliefert, sondern teilweise nur in die ausführbare Datei gebaked. Das bedeutet: wir können diese zwar ausführen (Funktionen und alles), wissen aber nicht wirklich was da drin ist. Daher benötigen wir eine Möglichkeit diese Module zu analysieren.
So wollen wir z. B.wissen:
- welche Funktionen ein Modul besitzt mit Anzahl der Parameter und am Besten auch noch Namen
- welche Klassen ein Modul besitzt und wie diese aussehen (Funktionen und Klassen- bzw. Instanzvariablen bzw. Properties)
- in diesen Modulen existierende Variablen anschauen (und wenn dies Klasseninstanzen sind, dann auch welche Klassen- bzw Instanzvariablen bzw. Properties diese haben und wie die belegt sind)
wir sind uns klar darüber, dass wir sicherlich nicht die privaten Member anschauen können, aber alles, auf was wir zugreifen können, müssen wir uns auch irgendwie anschauen können.
vielleicht weiß ja jemand wie dies möglich ist. Vielen Dank für die Hilfe.
Grüße,
anchelito
Python-Skripte analysieren, welche man NUR ausführen, aber
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo anchelito!anchelito hat geschrieben:- welche Funktionen ein Modul besitzt mit Anzahl der Parameter und am Besten auch noch Namen
- welche Klassen ein Modul besitzt und wie diese aussehen (Funktionen und Klassen- bzw. Instanzvariablen bzw. Properties)
- in diesen Modulen existierende Variablen anschauen (und wenn dies Klasseninstanzen sind, dann auch welche Klassen- bzw Instanzvariablen bzw. Properties diese haben und wie die belegt sind)
Willkommen im Python-Forum!
Dann lass uns mal ein wenig spielen:
Code: Alles auswählen
>>> import sys
>>> dir(sys)
['__displayhook__', '__doc__', '__egginsert', '__excepthook__', '__name__', '__plen',
'__stderr__', '__stdin__', '__stdout__', '__wxPythonCleanup', '_current_frames', '
_getframe', 'api_version', 'app', 'argv', 'builtin_module_names', 'byteorder', '
call_tracing', 'callstats', 'copyright', 'displayhook', 'dllhandle', 'exc_clear', '
exc_info', 'exc_type', 'excepthook', 'exec_prefix', 'executable', 'exit', '
getcheckinterval', 'getdefaultencoding', 'getfilesystemencoding', 'getrecursionlimit
', 'getrefcount', 'getwindowsversion', 'hexversion', 'maxint', 'maxunicode', '
meta_path', 'modules', 'path', 'path_hooks', 'path_importer_cache', 'platform', '
prefix', 'ps1', 'ps2', 'ps3', 'setcheckinterval', 'setprofile', 'setrecursionlimit',
'settrace', 'stderr', 'stdin', 'stdout', 'subversion', 'version', 'version_info', '
warnoptions', 'winver']
>>> sys.__dict__.keys()
['setrecursionlimit', 'getfilesystemencoding', 'path_importer_cache', 'stdout', 'app
', 'meta_path', 'exc_clear', 'prefix', 'getrefcount', 'byteorder', '__stdin__', '
excepthook', 'ps3', 'ps1', 'exc_type', '__wxPythonCleanup', 'getwindowsversion', '
__excepthook__', 'executable', 'winver', 'copyright', 'builtin_module_names', '
exec_prefix', 'version_info', 'getrecursionlimit', 'path_hooks', '_current_frames', '
platform', 'version', 'exit', 'call_tracing', 'callstats', 'setcheckinterval', '
__doc__', 'api_version', '__egginsert', '__plen', 'getdefaultencoding', '
getcheckinterval', 'maxunicode', 'settrace', 'setprofile', 'argv', '__stdout__', '
__name__', 'subversion', '__stderr__', 'dllhandle', 'displayhook', 'ps2', 'stdin', '
modules', 'warnoptions', 'maxint', '__displayhook__', '_getframe', 'stderr', '
exc_info', 'path', 'hexversion']
>>> sys.setcheckinterval
<built-in function setcheckinterval>
>>> help(sys.setcheckinterval)
Help on built-in function setcheckinterval in module sys:
setcheckinterval(...)
setcheckinterval(n)
Tell the Python interpreter to check for asynchronous events every
n instructions. This also affects how often thread switches occur.
>>>
Bringt dich das ein wenig weiter?
mfg
Gerold
PS: Wenn du dir wxPython und die zugehörige Demo installierst, dann hast du im Startmenü ein neues Programm: pyCrust
Öffne pyCrust und importiere ein Modul. Und schon kannst du in einem Baum alle Objekte dieses Moduls ansehen.
wxPython für Windows: http://downloads.sourceforge.net/wxpyth ... 1-py25.exe
wxPython-Demo für Windows: http://downloads.sourceforge.net/wxpyth ... .8.7.1.exe
mfg
Gerold
Zuletzt geändert von gerold am Samstag 9. Februar 2008, 21:32, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo anchelito!
Während du antwortetest, erweiterte ich meinen Beitrag um ein paar Zeilen. Dieser Post dient nur dazu, dich darauf aufmerksam zu machen, nicht dass es unbemerkt bleibt.
mfg
Gerold
Während du antwortetest, erweiterte ich meinen Beitrag um ein paar Zeilen. Dieser Post dient nur dazu, dich darauf aufmerksam zu machen, nicht dass es unbemerkt bleibt.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
hmm ... die "help"-Funktion scheint es leider nicht zu geben. muss ich dafür irgendwas vorher importieren??? vlt. haben die Entwickler es nicht integriert, aber ich kann es sicherlich irgendwie integrieren.
wxPython wäre bestimmt nützlich, aber leider sind die python-module, die ich analysieren möchte in die exe integriert und nicht als einzelne dateien vorhanden. ich kann sie im spiel importieren, aber nicht außerhalb. daher denke ich nicht, dass das programm mir helfen kann. es sei denn ich kann das programm irgendwie aus python ansprechen.
Danke!
Grüße,
André
wxPython wäre bestimmt nützlich, aber leider sind die python-module, die ich analysieren möchte in die exe integriert und nicht als einzelne dateien vorhanden. ich kann sie im spiel importieren, aber nicht außerhalb. daher denke ich nicht, dass das programm mir helfen kann. es sei denn ich kann das programm irgendwie aus python ansprechen.
Danke!
Grüße,
André
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo André!anchelito hat geschrieben:hmm ... die "help"-Funktion scheint es leider nicht zu geben.
Vielleicht kannst du ``pydoc`` importieren. Darauf setzt die help-Funktion normalerweise auf.
Code: Alles auswählen
>>> import pydoc
>>> import sys
>>> dir(pydoc)
['Doc', 'ErrorDuringImport', 'HTMLDoc', 'HTMLRepr', 'Helper', 'ModuleScanner', '
Repr', 'Scanner', 'TextDoc', 'TextRepr', '__author__', '__builtin__', '__builtins__
', '__credits__', '__date__', '__doc__', '__file__', '__name__', '__version__', '
_is_some_method', '_re_stripid', '_split_list', 'allmethods', 'apropos', '
classify_class_attrs', 'classname', 'cli', 'cram', 'deque', 'describe', 'doc', '
expandtabs', 'find', 'getdoc', 'getpager', 'gui', 'help', 'html', 'imp', '
importfile', 'inspect', 'isdata', 'ispackage', 'ispath', 'join', 'locate', 'lower',
'os', 'pager', 'pathdirs', 'pipepager', 'pkgutil', 'plain', 'plainpager', 're', '
replace', 'resolve', 'rfind', 'rstrip', 'safeimport', 'serve', 'source_synopsis', '
split', 'splitdoc', 'strip', 'stripid', 'synopsis', 'sys', 'tempfilepager', 'text',
'ttypager', 'types', 'visiblename', 'writedoc', 'writedocs']
>>> pydoc.doc(sys.api_version)
Python Library Documentation: int object
class int(object)
| int(x[, base]) -> integer
|
| Convert a string or number to an integer, if possible.
...
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
danke für den tipp mit pydoc.
leider war pydoc nicht vorhanden in dem spiel, daher hab ich einfach mal den ganzen python-lib-ordner kopiert und dem sys-path hinzugefügt, sodass ich pydoc importieren kann.
ich kann die pydoc.doc ausführen, bekomme dabei aber leider diesen fehler:
irgendwelche ideen?
vielen Dank!!
[Edit] vlt. hat es etwas mit der python-version des spiels zu tun (2.41) ... ich suche mal nach dieser version und teste es dann
leider war pydoc nicht vorhanden in dem spiel, daher hab ich einfach mal den ganzen python-lib-ordner kopiert und dem sys-path hinzugefügt, sodass ich pydoc importieren kann.
ich kann die pydoc.doc ausführen, bekomme dabei aber leider diesen fehler:
irgendwelche ideen?
vielen Dank!!
[Edit] vlt. hat es etwas mit der python-version des spiels zu tun (2.41) ... ich suche mal nach dieser version und teste es dann