我有一些我想要删除的文件,它们在开始时具有相同的名称,但具有不同的版本号。有谁知道如何使用他们的名字开头删除文件?
Eg.
version_1.1
version_1.2
有没有办法删除任何以名称版本开头的文件?
由于
答案 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))