删除目录中的所有文件

Kel*_*vin 42 python unix file-management

试图删除某个目录中的所有文件给我以下错误:

import os
test = "/home/me/test/*"
os.remove(test)
Run Code Online (Sandbox Code Playgroud)

我正在运行的代码是:

import os
test = "/home/me/test/*"
os.remove(test)
Run Code Online (Sandbox Code Playgroud)

Jac*_*son 59

os.remove()不适用于目录,os.rmdir()只能在空目录上工作.并且Python不会像某些shell一样自动扩展"/ home/me/test/*".

但是,您可以shutil.rmtree()在目录上使用它来执行此操作.

import shutil
shutil.rmtree('/home/me/test') 
Run Code Online (Sandbox Code Playgroud)

小心,因为它也删除了文件和子目录.

  • 请注意,使用shutil.rmtree()还将删除给定路径末尾的文件夹(它不删除目录内容,删除目录) (28认同)
  • import shutil; shutil.rmtree( '/家庭/ ME /测试') (2认同)

bas*_*ndi 16

os.remove不解析unix样式的模式.如果您使用的是类Unix系统,您可以:

os.system('rm '+test)
Run Code Online (Sandbox Code Playgroud)

另外你可以:

import glob, os
test = '/path/*'
r = glob.glob(test)
for i in r:
   os.remove(i)
Run Code Online (Sandbox Code Playgroud)


小智 12

有点麻烦,但如果您想保留目录,可以使用以下内容。

import os
import shutil
shutil.rmtree('/home/me/test') 
os.mkdir('/home/me/test')
Run Code Online (Sandbox Code Playgroud)


mam*_*ing 7

因为*是shell构造.Python实际上是在/ home/me/test目录中查找名为"*"的文件.使用listdir首先获取文件列表,然后在每个文件上调用remove.


小智 5

虽然这是一个老问题,但我认为没有人已经使用这种方法回答过:

# python 2.7
import os

d='/home/me/test'
filesToRemove = [os.path.join(d,f) for f in os.listdir(d)]
for f in filesToRemove:
    os.remove(f) 
Run Code Online (Sandbox Code Playgroud)

  • 使用`os.remove()`时需要包含文件的完整路径,因此您必须执行`os.remove(os.path.join("/home/me/test", f) )` 使其工作。 (3认同)