subprocess.call()删除文件

0 python subprocess

我想删除所有文件和目录除了其中一些文件和目录使用

`subprocess.call(['rm','-r','!(new_models|creat_model.py|my_mos.tit)'])`
Run Code Online (Sandbox Code Playgroud)

但它会回馈信息

rm:无法删除`!(new_models | creat_model.py | my_mos.tit)':没有这样的文件或目录

我怎样才能解决这个问题?谢谢

Bla*_*ack 5

如果rm在命令行上使用该命令!(…|…|…),则shell 将模式扩展为除调用之前模式中的模式名称之外的所有文件名rm.您的代码rm直接调用,因此rm将shell模式作为文件名获取,并尝试删除具有名称的文件.

您必须添加shell=Truesubprocess.call()Python 的参数列表或实际编码,而不是调用外部命令.缺点:那不止一条线.好处:它可以独立于外部shell和系统相关的外部程序完成.