我需要在文件夹中转换200个pyc文件。我知道通过uncompyle6 -o . 31.pyc
将pyc转换为py文件,但是由于我有很多pyc文件,这需要很长一段时间。我发现了很多文档,但批量转换为py文件并不多。 uncompyle6 -o。 * .pyc不受支持。
有关如何实现这一目标的任何想法吗?
答案 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)