解压6将pyc转换为py文件python 3(整个目录)

解压6将pyc转换为py文件python 3(整个目录),python,python-3.x,decompiling,pyc,Python,Python 3.x,Decompiling,Pyc,我有200个pyc文件需要在一个文件夹中转换。我知道通过uncompyle6-o将pyc转换为py文件。31.pyc然而,由于我有这么多pyc文件,这将需要很长时间。我发现了大量的文档,但没有大量转换为py文件。解压6-o.*。pyc不受支持 您知道如何实现这一点吗?在具有shell文件名扩展的操作系统中,您可以使用shell的文件扩展功能。例如: uncompyle6 -o /tmp/unc6 myfiles/*.pyc 如果您需要更高级或更多的控制,您可以编写一些代码来进行高级扩展。下面是

我有200个pyc文件需要在一个文件夹中转换。我知道通过
uncompyle6-o将pyc转换为py文件。31.pyc
然而,由于我有这么多pyc文件,这将需要很长时间。我发现了大量的文档,但没有大量转换为py文件。解压6-o.*。pyc不受支持


您知道如何实现这一点吗?

在具有shell文件名扩展的操作系统中,您可以使用shell的文件扩展功能。例如:

uncompyle6 -o /tmp/unc6 myfiles/*.pyc
如果您需要更高级或更多的控制,您可以编写一些代码来进行高级扩展。下面是在POSIX shell中过滤出单个文件
myfiles/maging.pyc
的上述操作:

cd myfiles
for pyc in *.pyc; do 
   if [[ $pyc != huge.pyc ]] ; then 
     uncompyle -o /tmp/unc $pyc
   fi 
done

注意:似乎这个问题在中也被问到了可能并不完美,但它对我来说非常有效

import os
import uncompyle6
your_directory = ''
for dirpath, b, filenames in os.walk(your_directory):
    for filename in filenames:
        if not filename.endswith('.pyc'):
            continue

        filepath = dirpath + '/' + filename
        original_filename = filename.split('.')[0]
        original_filepath = dirpath + '/' + original_filename + '.py'
        with open(original_filepath, 'w') as f:
            uncompyle6.decompile_file(filepath, f)

这是由uncompyle6本机支持的

uncompyle6 -ro <output_directory> <python_directory>
uncompyle6-ro
  • -r
    告诉工具递归到子目录中
  • -o
    告诉工具输出到给定目录

我认为不支持文件夹。或者,对于(*.pyc)中的/r%v,执行解压缩6-o。%v“%vx”:。如果需要,你也可以通过os.popen在Python中运行它。这是一个非常方便的工具。但我不确定如何获取pyinstaller的源代码/相关pyc文件。你知道吗?