【发布时间】:2021-06-16 08:54:04
【问题描述】:
我最近试图了解 sockets 模块在 python 中是如何工作的,我打开了源代码并通过跟踪 socket 类我发现它使用了类似_socket.socket 的东西。当我向上滚动并找到import _socket 时,我跟踪它并发现该模块位于另一个名为 DLLs 的文件夹中(我不知道如何,但我知道无论你的文件在哪里,你都可以从 python 安装位置导入文件位于,但是如何?如果你也能回答这个疑问,那就太酷了)所以用记事本打开文件(它没有默认的扩展名关联)告诉我它有一个尴尬的编码。这是_socket.pyd 中的前几行:
MZ ÿÿ ¸ @ º ´ Í!¸LÍ!This program cannot be run in DOS mode.
$ jâò.ƒã¡.ƒã¡.ƒã¡'ûp¡(ƒã¡B÷â ,ƒã¡B÷æ "ƒã¡B÷ç &ƒã¡B÷à -ƒã¡÷÷â ,ƒã¡uëâ )ƒã¡.ƒâ¡”ƒã¡÷÷î /ƒã¡÷÷ã /ƒã¡÷÷¡/ƒã¡÷÷á /ƒã¡Rich.ƒã¡ PE d† ;3` ð " z ¤ ¨( € ` ð= ` põ P Àõ ´ @ 0 €
° P ¸ ô¡ T P¢ 8 .text ny z `.rdata ¬y z ~ @ @.data ( ø @ À.pdata €
0 @ @.rsrc @
@ @.reloc ¸ P @ B H‰\$H‰t$UWATAVAWH¬$ÿÿÿHìð H‹àÿ H3ÄH‰…è ¹ HT$ ÿf …À…>, H
ÿ9„ 3ÿƒ=è ÿDg…„ 3ÒÇD$ A¸ H‰|$,HL$4è5( 3Àf‰}6A°‰E8W3Éÿ0€ A°A‹ÔH‹Èÿ!€ A°W H‹Èÿ€ W#ÇD$$ L‹ÀD‰d$(HL$ fD‰e4ÿß ‹Ï…À•Á‰
Z H‹£ƒ H
任何人都知道如何将其解码为简单的 python 代码(我只知道.pyd 文件是 DLL 文件,但是是 python 格式)?我还从谷歌搜索数小时发现 DLL 和 EXE 文件具有相同的编码,所以如果有人能给我一个解码工具的链接或者至少给我一个这个编码字符的表以便我可以解码它会很酷我自己的。
【问题讨论】:
-
这是一个二进制文件,是编译C代码的结果。您无法将其转换为 Python 代码。
-
如果你想了解socket模块是如何工作的,你可以阅读原始的C源代码,因为Python是开源软件。
-
那么一个C编译是如何导入python的呢?
-
使用Python的导入机制。
-
@mkrieger1 我找不到原始源代码,如果你知道它在哪里可以给一个链接
标签: python file-encodings