我的任務是導出從容器加載的導入(編譯)模塊。反編譯導入的模塊(例如使用uncompyle2)
我有一個導入模塊的Py.-Script。在使用print(module1)時,我可以看到它是一個編譯的python(pyc)文件,從檔案中加載。由於無法訪問存檔,我的想法是導入模塊並使用uncompyle2對其進行反編譯。
這是我的最低代碼:
import os, sys
import uncompyle2
import module1
with open("module1.py", "wb") as fileobj:
uncompyle2.uncompyle_file(module1, fileobj)
然而,這種打印我的錯誤。如果我將uncompyle參數中的module1替換爲實際路徑,那沒有什麼區別。我沒有從容器中加載pyc文件,而是在目錄中的單個文件並且它工作時,我試着成功驗證了代碼段。
錯誤:
Traceback (most recent call last):
File "C:\....\run.py", line 64, in <module>
uncompyle2.uncompyle_file(module1, fileobj)
File "C:\....\Python\python-2.7.6\lib\site-packages\uncompyle2\__init__.py", line 124, in uncompyle_file
version, co = _load_module(filename)
File "C:\.....\Python\python-2.7.6\lib\site-packages\uncompyle2\__init__.py", line 67, in _load_module
fp = open(filename, 'rb')
TypeError: coercing to Unicode: need string or buffer, module found
有誰知道我要去的地方錯了嗎?
感謝您提供詳盡,完整的答案。我學到了很多!不過,我想一定有另一種方式。我只需要找到另一種方式來訪問文件,然後再導入。任何建議,看看哪個方向是高度讚賞。 – lammy
@lammy如何導入文件?存檔位於何處,其內容是什麼? – user4815162342
Hej用戶。該文件使用zipimport模塊導入,然後使用「import ... from」加載。但是,我無法用任何典型的壓縮軟件打開該文件。 Linux和TrID上的File命令只能看到原始數據。我不知道如何繼續。謝謝你的幫助! – lammy