Автор Тема: Удаление файлов  (Прочитано 2198 раз)

zo0m

  • Newbie
  • *
  • Сообщений: 12
Удаление файлов
« : Января 01, 2015, 14:00:48 »
Привет. С праздниками Вас.

В процессе компиляции .py-файлов, в папке проекта создаются .pyc-хвосты. Я бы хотел их сразу удалять средствами сублайм-плагина. Все пути в сублайме экранируются дополнительным слешем: my_path = "D:\\work\\test.pyc", можно также так: my_path = r"D:\work\test.pyc"
В плагине пишу os.remove(my_path) и получаю: FileNotFoundError: [WinError 2] Не удается найти указанный файл: 'D:\\work\\test.pyc'
Получается что из под сублайма пути в питон передаются с двойными слешами. Это решается выносом функции поиска-удаления в отдельный файл и запуском через: window.run_command('exec', {'cmd': ['python', '-u', 'del.py'], 'working_dir': ms_path})... но тогда del.py приходится копировать в папку проекта и это плохо, потому что нарушается целостность плагина.

Как реализовать удаление файлов из сублайма?
Может есть плагин с таким функционалом?

zo0m

  • Newbie
  • *
  • Сообщений: 12
Re: Удаление файлов
« Ответ #1 : Января 01, 2015, 15:12:24 »
Это какой-то закон подлости.. вчера весь день убил на поиск решения. Как только описал проблему на форуме, через пять минут нашел способ в умной книге.. Вот рабочий вариант:

import os
from glob import glob

def delete_pyc(self, ms_path): # Удалить все *.pyc в указаной папке ms_path
       
        counter = 0

        for pyc_path, dirs, files in os.walk(ms_path):
            pattern = glob(pyc_path + os.sep + '*.pyc')
           
            for fn in pattern:
                print(fn)
                os.remove(fn)
                counter += 1
       
        print("Total .pyc deleted:", counter)

Возник новый вопрос: Чистка *.pyc файлов начинается раньше, чем заканчивается компиляция *.py.. Поставил паузу но решение плохое.. иногда компиляция затягивается и чистка не происходит полностью.
window.run_command('exec', {'cmd': ['python', '-u', build[file]], 'working_dir': ms_path}) # компиляция
time.sleep(5) # ждать 5 сек
self.delete_pyc(ms_path) # почистить *.pyc

- Как поставить задачи на последовательный конвеер?

« Последнее редактирование: Января 01, 2015, 17:24:07 от zo0m »