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

2024-10-01 00:19:37 发布

您现在位置:Python中文网/ 问答频道 /正文

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

rm file.*

不过,我知道通配符在pexpect中不可用。因为只有四个文件,所以我要生成一个子文件,然后从这个子文件中删除所需的文件:

^{pr2}$

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

所以我的解决方案是生成4个子代来删除文件。像这样:

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

有更好的方法吗?就像在更优雅和只使用一个子进程?也许我可以用某种期望让孩子活下来,或者以列表的形式一次提交所有的论点?


Tags: 文件rm代码目录名称终端进程手动
1条回答
网友
1楼 · 发布于 2024-10-01 00:19:37

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


这应该做到:

import glob
import os

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

使用os.remove()比调用子流程好得多。在

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

相关问题 更多 >