2013-05-12 17 views
7

Sto cercando di decompilare alcuni file .pyc - solo bisogno di alcuni dati di base da loro, ho sentito che meglio per essa sarebbe Uncompyle2,Python> Uncompyle2 - utilizzo

così ho installato Python27 (Win), quindi Ho installato Uncompyle2 da https://github.com/wibiti/uncompyle2 - tutto è ok finora, ora provo a scoprire come usarlo, readme dice che ho bisogno di scrivere uncompyle2 --h per ottenere un po 'più di aiuto, sto ottenendo dopo questo messaggio "indefinito", prossimo I ho provato ad importare lo script tramite import uncompyle2 nell'interprete, penso che il modulo sia caricato (dopo aver digitato uncompyle2 nell'interprete che dice che ha caricato le funzioni da __init__) ma non riesco ancora a ottenere nessuna delle sue funzioni per ottenere lavoro, se provo a fare qualsiasi cosa dice "Errore di sintassi" (anche se scrivo e tutto come da readme) e --h non funziona neanche,

Cosa sto facendo male?

A proposito, ho provato a trovare alcuni convertitori online, ma dal momento che i file di Python int con estensione 2.6.4 non riesco a trovare nulla, che può funzionare con esso.

+0

Si suppone di digitare 'uncompyle2 --h' nel terminale, non nell'interprete Python. Per Windows, potrebbe essere necessario modificare la variabile 'PATH' (google it) per includere la cartella in cui è installato uncompyle2. –

risposta

12

da IDLE

import uncompyle2 
with open("uncompiled file.py", "wb") as fileobj: 
    uncompyle2.uncompyle_file("afile.pyc", fileobj) 

Il risultato dovrebbe essere il codice sorgente non compilato.

EDIT 2/15/18

per Python 3 uso uncompyle 6 e aprire il file di output in modalità "w" (non "wb")

import uncompyle6 
with open("uncompiled file.py", "w") as fileobj: 
    uncompyle6.uncompyle_file("afile.pyc", fileobj) 
+0

You are a life saver :) –

+0

Mi viene restituito 'TypeError: è richiesto un oggetto simile a byte, non 'str'' su uncompyle6 per python 3 – chandru

+0

@chandru risposta aggiornata per compatibilità py3 – user2682863

1

Per eseguire dalla riga di comando (PowerShell per esempio) è necessario eseguire lo script uncompyle2 in Script, probabilmente in C: \ Python \ Scripts se hai installato Python in C: \ Python. Ciò decompilare il file somefile.pyc e creare il file decompiled.py in c: \ temp

PS C:. \ Python \ Script> python \ uncompyle2 -oc: \ temp \ decompiled.py somefile.pyc

1

Vorrei solo aggiungere alla risposta accettata per fare tutto dalla stessa directory, ho avuto una cartella vuota uncompiled file.py quando provo a eseguirla da altrove. L'intero script

import os 

#this should be /folder_where_py_filtes_were/__pycache__/ in python3 
os.chdir("C:\Dir where my pyc is") 
import uncompyle2 
with open("uncompiled file.py", "wb") as fileobj: 
    uncompyle2.uncompyle_file("afile.pyc", fileobj) 

Oltre a questo l'utente dell'utente2682863! salvato il mio progetto

+0

funzionerà con python3 – chandru

+0

Sì, assicurati di non eseguire ilcompleto da/__pycache __/ –

+0

LMK come va, non l'ho ancora testato in 3 –

0

Proprio ritentata la versione a https://github.com/wibiti/uncompyle2

Ma non è stato sempre importato. Ho dovuto cercare nella libreria e ho scoperto che era stato rinominato ... quindi questo è il codice che ha funzionato per me:

import uncompyle6 
with open("uncompiled file.py", "wb") as fileobj: 
    uncompyle6.uncompyle_file("yourpycfile.pyc", fileobj) 
+0

Ricevo TypeError: è richiesto un oggetto simile a un byte, non 'str' su uncompyle6 per python 3 – chandru