我想从我的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')
有更好的方法吗?更优雅,只使用一个子流程?也许我可以通过某种期望让孩子保持活力,或者以列表格式一次性提交所有论点?
答案 0 :(得分:1)
警告:测试可能会破坏您数据的代码!也许你不清楚某些事情,或者我误解了。小心!
这应该这样做:
import glob
import os
for filepath in glob.glob('file.*'):
os.remove(filepath)
使用os.remove()
比调用子进程要好得多。
这个确切的代码要求您在file.*
文件所在的目录中运行它。它很容易修改。