The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  вход/выход  слежка  RSS
"удаление файлов по маске на Python'e"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Программирование под UNIX (Python)
Изначальное сообщение [ Отслеживать ]

"удаление файлов по маске на Python'e"  +/
Сообщение от Гриша on 26-Фев-12, 05:20 
Доброе время суток,гуру)
Вообщем как можно реализовать на Питоне сл. вещь:
есть у меня две ПЭВМ,организованные между собой в одну ЛВС(150.1.1.1 255.255.255.0 name:pv1 ОС RedHat 5, 150.1.1.2 255.255.255.0 name:pv2 ОС Windows Server 2003)
c pv1 удалить файлы которые удовлетворяют требованиям удаления,храниящиеся в pv2 в каталоге С:/files/
Требование для удаления одно-если в первыех 123 байтах проверяемого файла есть последовательность символов "пустойНеНужный", то его удалить...если же этой последовательности в первых 123 байтах файла нет-то его не удаляем...

примерный каркас можете подсказать как это реализовывается?
Заранее очень благодарен!

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения по теме [Сортировка по времени | RSS]


1. "удаление файлов по маске на Python'e"  +/
Сообщение от ЕЕ on 26-Фев-12, 13:03 
>[оверквотинг удален]
> Вообщем как можно реализовать на Питоне сл. вещь:
> есть у меня две ПЭВМ,организованные между собой в одну ЛВС(150.1.1.1 255.255.255.0 name:pv1
> ОС RedHat 5, 150.1.1.2 255.255.255.0 name:pv2 ОС Windows Server 2003)
> c pv1 удалить файлы которые удовлетворяют требованиям удаления,храниящиеся в pv2 в каталоге
> С:/files/
> Требование для удаления одно-если в первыех 123 байтах проверяемого файла есть последовательность
> символов "пустойНеНужный", то его удалить...если же этой последовательности в первых 123
> байтах файла нет-то его не удаляем...
> примерный каркас можете подсказать как это реализовывается?
> Заранее очень благодарен!

смонтируй шару, возьми содержимое каталга os.listdir(path), прочитать начало файла можно функццией f=open(listdir[i]) а далье f.read() ну и os.remove(path)

Ответить | Правка | ^ к родителю #0 | Наверх | Cообщить модератору

2. "удаление файлов по маске на Python'e"  +/
Сообщение от Гриша on 26-Фев-12, 15:27 

> смонтируй шару, возьми содержимое каталга os.listdir(path), прочитать начало файла можно
> функццией f=open(listdir[i]) а далье f.read() ну и os.remove(path)

Т.Е. так?
иерархия проверяемых файлов(только файлов очень много) такова:
files:
|-fgt.vob
|-katalog
    |-gythdkc.vob
    |-jifms.vob
|-katalog2
    |-gyrtnf.vob


всё делаю на линуксовой тачке:
1 шаг:
---------------------------------------------------------------
#mount -t cifs //150.1.1.2/files/ /mnt/files -o guest,rw,iocharset=utf8,file_mode=0777,dir_mode=0777
-----------------------------------------------------------------
2 шаг:
создаю сам скрипт,назовём его deleter.py:
------------------------------------------------------------------
# -*- coding: utf-8 -*-
import glob, os, sys, time   # Импортируем необходимые модули
a, c, x = 123, "", 1
t = 1                        # Установка таймаута в секундах; 5400 - 1,5 часа
ra = "vob"                 # Установка расширения, без точки
os.listdir(/mnt/files/)
name = "*"                   # Установка имени файла; * - любое, ? - заменяет любой один символ
time.sleep(t)                # Таймаут
while  x < a:             # Каждый новый цикл, опускает поиск на директорию ниже
      f=open(listdir[x])
      f.read()
      b = "/*"
      put = "."+c+"/"+name+"."+a+"пустойНеНужный"     # Маска-вот тут точно не знаю как проверить 123 байт проверяемого файла,который равен или не равен значению "пустойНеНужный"
      llist = glob.glob(put)          # Осуществляем поиск файлов по маске
      c = c+b
      x = x+1
      l = len(llist)
      while r < l:
         os.remove(/mnt/files/)          # Удаляем файл
         del llist[0]                 # и информацию в списке о нем
         l = len(llist)
         print "Удалён файл"+name
-----------------------------------------------------------
3 шаг на линуксовой тачке запускаю скрипт:
-----------------------------------------------------------
#python deleter.py

и в консоле у меня по идее должны появляться сл сообщения:
Удалён файл gythdkc.vob
Удалён файл gyrtnf.vob

верно?


Ответить | Правка | ^ к родителю #1 | Наверх | Cообщить модератору

3. "удаление файлов по маске на Python'e"  +/
Сообщение от ЕЕ on 26-Фев-12, 23:45 

import os

def remfile(pth):
    d=os.listdir(pth)
# разбиваем на файлы и директории, как разбить придумай сам
    files=[]
    drs=[]
    for i in d:
        if i is files:
            files.append(i)
        else:
            drs.append(i)
    for i in files:
        s=open(i).read(123)
        if "Ненужно" in s:
            os.remove(i)

    for i in drs:
        remfile(i)

Ответить | Правка | ^ к родителю #2 | Наверх | Cообщить модератору

4. "удаление файлов по маске на Python'e"  +/
Сообщение от ЕЕ on 26-Фев-12, 23:47 
os.remove(i)
print "удален файл %s" % i

и будет в консоле выводиться

Ответить | Правка | ^ к родителю #3 | Наверх | Cообщить модератору

5. "удаление файлов по маске на Python'e"  +/
Сообщение от Гриша on 27-Фев-12, 04:12 
>разбиваем на файлы и директории, как разбить придумай сам

Хотел бы сразу поблагодарить за пример!Всё понятно как и что в нём работает)
Единсвенное что-то не получается разбить и сформиролвать отдельный список папок и отдельный список каталогов,используя общий список как в примере это прееменная-d

я пробовал так к примеру:
import os
d=os.listdir(/mnt/files/)
print d
print len(d)
files[]=="" #создаём отдельный список для файлов и обнуляем его
drs[]==""#создаём отдльный список для папок и обнуляем его
j==0
k==0
#создаём цикл проверки на принадлежность к папкам или каталогам элементов в списке d на уровне директории /mnt/files/-правда как создать ещё цикл,чтобы проверялись и подкаталоги все пока не понятно(
for i in d:
    if d[i]=='*.*':
        files[j]==d[i]
        j=j+1
    else:
        drs[k]==d[i]
         k=k+1
print files
print drs
for i in d:
        if i is files:
            files.append(i)
        else:
            drs.append(i)
    for i in files:
        s=open(i).read(123)
        if "Ненужно" in s:
            os.remove(i)
            print "удален файл %s" % i

    for i in drs:
        remfile(i)
-------
как и уже догадались, у меня ничего не получилось(((
listdir-я так понял чистой воды простой список, в котором содержаться имена файлов и папок...попробовал как выше указал этот список разделить отдельно на папки и файлы-что-то не получается((
может как пример подскажите хотя бы один способ?

    
    

Ответить | Правка | ^ к родителю #4 | Наверх | Cообщить модератору

6. "удаление файлов по маске на Python'e"  +/
Сообщение от Гриша on 27-Фев-12, 09:24 
опечатался..пропустил строку
def remfile(pth)
перед строкой
d=os.listdir(/mnt/files/)

Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

7. "удаление файлов по маске на Python'e"  +/
Сообщение от ЕЕ on 27-Фев-12, 18:31 
files[]=="" так в питоне не делают. Достаточно files=[]. чуть по позжа напишу как мона проверить
Ответить | Правка | ^ к родителю #5 | Наверх | Cообщить модератору

8. "удаление файлов по маске на Python'e"  +/
Сообщение от Гриша on 28-Фев-12, 08:04 
что-то пристально смотрю,но никак видимо времени нет((


Ответить | Правка | ^ к родителю #7 | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру