Os удалить любой файл, кроме файла .py из каталога

Я пытаюсь найти способ написать скрипт, если any файл CSV существует в каталоге, удалите его. Как я могу написать это, не указывая конкретное имя файла?

Можно ли написать, если существует какой-либо файл, но с расширением .py, удалить его с помощью os?

import os

if os.path.exists("AHU4_data_CSV.csv"):
  os.remove("AHU4_data_CSV.csv")

else:
  print("The file does not exist")

пройдитесь по каждому файлу и посмотрите, есть ли они endswith('.csv')

SuperStew 06.06.2019 16:44
.lower().endswith(".csv") в случае .CSV
Lord Wolfenstein 06.06.2019 16:47
Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
2
453
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Это должно работать - просто перечислите все файлы/папки в каталоге, и если они не заканчиваются на .py, удалите их.

for filename in os.listdir('.'):
    if not filename.endswith('.py'):
        if os.path.isfile(filename):
            os.remove(filename)
        else:
            os.rmdir(filename)

Здравствуйте, можно ли когда-нибудь включить оператор or для включения файлов .csv и .png в дополнение к .py? Что-то вроде: if not filename.endswith('.py') or not filename.endswith('.csv') or not filename.endswith('.png'):

bbartling 07.06.2019 21:45
and будет работать лучше, чем or там (if not (any of these) и if not(this) and not(this) and not(this) логически эквивалентны. Но да, это было бы просто сделать.
Green Cloak Guy 07.06.2019 21:50

Ах, хорошо, значит, if not filename.endswith('.py','.csv','png'): тоже подойдет? Спасибо за вашу помощь

bbartling 07.06.2019 22:12

Нет, потому что функция endswith() так не работает, но if not (filename.endswith('.py') or filename.endswith('.csv') or filename.endswith('.png')): должна работать

Green Cloak Guy 07.06.2019 22:20

ты мог бы сделать вот так

import os
mydir='path/to/dir/with/files'

for file in os.listdir(mydir):
    if file.endswith('.csv'):
        os.remove(os.path.join(mydir,file))

вы можете сделать что-то вроде этого:

import os

root = "e:/"

for root, dirs, files in os.walk(root):
    for file in files:
        if file.endswith('.csv'):
            print("removed: " + os.path.join(root, file) )
            os.remove( os.path.join(root, file) )

Он удалит из ваших E каталогов все файлы CSV, включая файлы CSV подпапок из E.

Другие вопросы по теме