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

时间:2017-11-20 17:24:52

标签: python python-3.x decompiling pyc

我需要在文件夹中转换200个pyc文件。我知道通过uncompyle6 -o . 31.pyc将pyc转换为py文件,但是由于我有很多pyc文件,这需要很长一段时间。我发现了很多文档,但批量转换为py文件并不多。 uncompyle6 -o。 * .pyc不受支持。

有关如何实现这一目标的任何想法吗?

3 个答案:

答案 0 :(得分:4)

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

uncompyle6 -o /tmp/unc6 myfiles/*.pyc

如果您需要更高级或更多控制的东西,您可以随时编写一些代码来进行更高级的扩展。以上是在POSIX shell中完成的过滤单个文件myfiles/huge.pyc

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

注意:Issue on output directory while executing commands with windows batch command "FOR /R"

中也提出了这个问题

答案 1 :(得分:4)

uncompyle6本机支持

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

答案 2 :(得分:1)

可能并不完美,但对我来说效果很好。

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)