簡體   English   中英

從python3運行bash命令

[英]running bash command from python3

我正在嘗試從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)'])

請注意,這將刪除腳本本身...

你也可以使用

import os
os.system('rm -f !(INCAR|KPOINTS|PO*|*.sh)')

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM