我正在尝试从我的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/

10-10 22:45