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

Using pexpect to remove several files from a directory in a Linux terminal

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

rm file.*

不过我知道通配符在预期中不可使用。由于只有四个文件,我正打算生成一个 child 并从此 child 中删除所需的文件:

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

这里的问题是 child 子进程在生成并删除第一个文件后自行终止。我假设这是因为终端 returns 删除文件后换行。

所以我的解决方法是生成 4 children 来删除文件。像这样:

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

有更好的方法吗?更优雅并且只使用一个子流程?也许我可以让 child 保持某种期望或以列表格式一次提交所有参数?

警告:测试代码可能会破坏您的数据!可能你有什么地方不清楚,或者我理解错了。小心!


应该这样做:

import glob
import os

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

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

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