我正在尝试从我的linux机器上删除一些文件,除了一些:
touch INCAR KPOINTS foo bar
$ls
bar foo INCAR KPOINTS
$python3 mini.py
Job Done
$ls
bar foo INCAR KPOINTS
mini.py
是:#!/usr/bin/python3
import subprocess
subprocess.run(['rm', '-f', '!(INCAR|KPOINTS|PO*|*.sh)'])
print("Job Done")
从
mini.py
的输出中可以看出,它没有给出任何错误,但也没有执行它的任务。我在这里做错了什么?
最佳答案
它不起作用,因为!()
是一个扩展的匹配模式,需要显式启用:
subprocess.run(['/bin/bash', '-O', 'extglob', '-c', 'rm -f !(INCAR|KPOINTS|PO*|*.sh)'])
注意这将删除脚本本身。。。
关于python - 从python3运行bash命令,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37865608/