Удаление файлов, которые начинаются с имени Python - PullRequest
7 голосов
/ 06 января 2010

У меня есть несколько файлов, которые я хочу удалить, они имеют одинаковые имена в начале, но имеют разные номера версий. Кто-нибудь знает, как удалять файлы, используя начало их имени?

Eg.
version_1.1
version_1.2

Есть ли способ удалить любой файл, который начинается с имени версии?

Спасибо

Ответы [ 4 ]

21 голосов
/ 06 января 2010
import os, glob
for filename in glob.glob("mypath/version*"):
    os.remove(filename) 

Замените правильный путь (или . (= текущий каталог)) на mypath. И убедитесь, что вы не ошиблись:)

Это вызовет исключение, если файл используется в данный момент.

4 голосов
/ 06 января 2010

Если вы действительно хотите использовать 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 для этого, вероятно, оболочка изначально поддерживаетработа.

3 голосов
/ 06 января 2010

На каком языке?

В 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);
1 голос
/ 06 января 2010
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...