Доброе время суток,гуру)
Вообщем как можно реализовать на Питоне сл. вещь:
есть у меня две ПЭВМ,организованные между собой в одну ЛВС(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 байтах файла нет-то его не удаляем...примерный каркас можете подсказать как это реализовывается?
Заранее очень благодарен!
>[оверквотинг удален]
> Вообщем как можно реализовать на Питоне сл. вещь:
> есть у меня две ПЭВМ,организованные между собой в одну ЛВС(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)
> смонтируй шару, возьми содержимое каталга 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верно?
import osdef 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)
os.remove(i)
print "удален файл %s" % iи будет в консоле выводиться
>разбиваем на файлы и директории, как разбить придумай самХотел бы сразу поблагодарить за пример!Всё понятно как и что в нём работает)
Единсвенное что-то не получается разбить и сформиролвать отдельный список папок и отдельный список каталогов,используя общий список как в примере это прееменная-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" % ifor i in drs:
remfile(i)
-------
как и уже догадались, у меня ничего не получилось(((
listdir-я так понял чистой воды простой список, в котором содержаться имена файлов и папок...попробовал как выше указал этот список разделить отдельно на папки и файлы-что-то не получается((
может как пример подскажите хотя бы один способ?
опечатался..пропустил строку
def remfile(pth)
перед строкой
d=os.listdir(/mnt/files/)
files[]=="" так в питоне не делают. Достаточно files=[]. чуть по позжа напишу как мона проверить
что-то пристально смотрю,но никак видимо времени нет((