【发布时间】:2016-06-16 17:19:00
【问题描述】:
我正在尝试删除一些文件(从我的 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 的输出中可以看出,它没有给出任何错误,但也没有完成它的工作。
我在这里做错了什么?
【问题讨论】:
-
rm不是可执行文件,它只是 bash 的内部命令。试试run['bash', '-c', " rm ..."] -
那也不行
-
rm是任何健全系统中的可执行文件。它是 GNU Coreutils 软件包的一部分,您可以在/bin/或/usr/bin中找到它,具体取决于您的发行版。 -
对不起,我错了。但是你为什么不使用
os.remove()。rm似乎运行但无法删除其中一些文件。 -
我可以使用
os.remove选择不删除哪些文件吗?我的意思是!(...)部分?