Czy możliwe jest (niekoniecznie za pomocą introspekcji Pythona) wydrukowanie kodu źródłowego skryptu?Skrypt w języku Python wypisujący jego źródło
Chcę wykonać krótki skrypt Pythona, który również wydrukuje jego źródło (tak, aby zobaczyć, które polecenia są wykonywane).
Skrypt jest coś takiego:
command1()
#command2()
command3()
print some_variable_that_contain_src
Prawdziwa aplikacja jest, że chcę, aby uruchomić skrypt z ipython z run -i
magii i posiada na wyjściu źródła (czyli polecenia wykonywane). W ten sposób mogę sprawdzić, które polecenia są komentowane przy każdym wykonaniu. Co więcej, jeśli zostanie wykonany w Notatniku, pozostawiam ślad, który z poleceń został użyty.
Rozwiązanie
Korzystanie korylprince rozwiązanie I skończyć z tym jednym-liner należy umieścić na początku skryptu:
with open(__file__) as f: print '\n'.join(f.read().split('\n')[1:])
To będzie drukować źródła skryptu wyjątkiem pierwszej linii (to byłby tylko hałas). Łatwo też zmodyfikować cięcie, aby wydrukować inny "kawałek" skryptu.
Jeśli chcesz zamiast wydrukować cały plik, jedno-liner upraszcza się do:
with open(__file__) as f: print f.read()
może zajrzeć do pakietu inspect w python: http://www.python.org/doc//current/library/inspect.html. W szczególności metoda 'getource' – Greg
Ten typ programów nazywa się Quine programs. http://en.wikipedia.org/wiki/Quine_(computing) Próbuję napisać je samemu w pythonie, jego zbyt cholernie trudnym. :( – thefourtheye
Dlaczego usunąć pierwszy wiersz? Otrzymasz skrypt, który po uruchomieniu wypisuje kod źródłowy *, który nie zawiera niczego na temat drukowania jego kodu źródłowego * Jest to mylące: pierwsza linia to nie hałas, więcej niż komentarze lub zapewnienia są szumami – user2357112