使用pexpect从Linux终端中的目录中删除多个文件

时间:2015-08-18 07:35:18

标签: python linux pexpect

我想从我的python代码所在的目录中删除几个名称相似的文件。从终端手动执行此操作非常简单:

rm file.*

但是我知道通配符不能在pexpect中使用。由于只有四个文件,我只是要生成一个孩子,并从这个孩子中删除所需的文件:

child = pexpect('rm file.1')
child.sendline('rm file.2')
child.sendline('rm file.3')
child.sendline('rm file.4')

这里的问题是子子进程在产生并删除第一个文件后终止自身。我假设这是因为终端在删除文件后返回一个新行。

所以我的修复是产生4个孩子来删除文件。像这样:

child1 = pexpect('rm file.1')
child2 = pexpect('rm file.2')
child3 = pexpect('rm file.3')
child4 = pexpect('rm file.4')

有更好的方法吗?更优雅,只使用一个子流程?也许我可以通过某种期望让孩子保持活力,或者以列表格式一次性提交所有论点?

1 个答案:

答案 0 :(得分:1)

警告:测试可能会破坏您数据的代码!也许你不清楚某些事情,或者我误解了。小心!

这应该这样做:

import glob
import os

for filepath in glob.glob('file.*'):
    os.remove(filepath)

使用os.remove()比调用子进程要好得多。

这个确切的代码要求您在file.*文件所在的目录中运行它。它很容易修改。