使用 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.*
文件所在的目录中。它很容易修改。
我想从我的 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.*
文件所在的目录中。它很容易修改。