在Python中与Rar.exe通信

问题描述 投票:0回答:1

从Python脚本我想创建一个RAR文件。我需要与Rar.exe进行通信,因为我只需要来自多卷存档集的第一个RAR卷,仅此而已。 -vp开关确保在每个音量后询问Create next volume ? [Y]es, [N]o, [A]ll。第一次弹出这个问题时,我想回答否。我该如何做到这一点?

我一直在阅读和尝试很多事情,我发现这样的事情可以用pexpect完成。我一直在尝试两个不同的Windows端口:wexpectwinpexpect。结果是我的脚本将挂起。没有创建RAR文件。这是我的代码:

import wexpect
import sys

rarexe = "C:\Program Files\WinRAR\Rar.exe"
args = ['a', '-vp', '-v2000000b', 'only_first.rar', 'a_big_file.ext']

child = wexpect.spawn(rarexe, args)
child.logfile = sys.stdout
index = child.expect(["Create next volume ? [Y]es, [N]o, [A]ll", 
        wexpect.EOF, wexpect.TIMEOUT], timeout=10)
if index == 0:
     child.sendline("N")
else:
     print 'error'

其他方法也是受欢迎的。

python subprocess interactive rar pexpect
1个回答
-1
投票

我有同样的问题,因为网上有几个(buggy)版本的wexpect。

查看my variant,它是一个实例的副本,对我有用。

这可以使用安装

pip install wexpect

© www.soinside.com 2019 - 2024. All rights reserved.