删除以Python名称开头的文件

时间:2010-01-06 11:48:52

标签: python

我有一些我想要删除的文件,它们在开始时具有相同的名称,但具有不同的版本号。有谁知道如何使用他们的名字开头删除文件?

Eg.
version_1.1
version_1.2

有没有办法删除任何以名称版本开头的文件?

由于

5 个答案:

答案 0 :(得分:21)

import os, glob
for filename in glob.glob("mypath/version*"):
    os.remove(filename) 

替换.的正确路径(或mypath(=当前目录))。并确保你没有错路:)

如果当前正在使用文件,这将引发异常。

答案 1 :(得分:4)

如果你真的想使用Python,你可以使用os.listdir()的组合,它返回某个目录中所有文件的列表,以及os.remove()

即:

my_dir = # enter the dir name
for fname in os.listdir(my_dir):
    if fname.startswith("version"):
        os.remove(os.path.join(my_dir, fname))

然而,正如其他答案指出的那样,你真的不必为此使用Python,shell本身可能支持这样的操作。

答案 2 :(得分:3)

用哪种语言?

在bash(Linux / Unix)中你可以使用:

rm version*

或批处理(Windows / DOS),您可以使用:

del version*

如果你想在Python中写一些东西,那就相当容易了 - 只需看一下正则表达式的文档。

编辑: 仅供参考,这是如何在Perl中实现的:

opendir (folder, "./") || die ("Cannot open directory!");
@files = readdir (folder);
closedir (folder);

unlink foreach (grep /^version/, @files);

答案 3 :(得分:1)

import os
os.chdir("/home/path")
for file in os.listdir("."):
    if os.path.isfile(file) and file.startswith("version"):
         try:
              os.remove(file)
         except Exception,e:
              print e

答案 4 :(得分:0)

以下功能将删除目录中以公用字符串开头的所有文件和文件夹:

import os
import shutil

def cleanse_folder(directory, prefix):
    for item in os.listdir(directory):
        path = os.path.join(directory, item)
        if item.startswith(prefix):
            if os.path.isfile(path):
                os.remove(path)
            elif os.path.isdir(os.path.join(directory, item)):
                shutil.rmtree(path)
            else:
                print("A simlink or something called {} was not deleted.".format(item))