Всем привет!)
в директории /mnt/files/ имеется отдельные файлы и каталоги с файлами.
Вот написал скрипт на питоне:
-------
# -*- coding: utf-8 -*-
import osdef get_dir_names(path):
return [os.path.isdir(entry) for entry in os.listdir(path)]def get_file_names(path):
return [os.path.isfile(entry) for entry in os.listdir(path)]def remfile(pth):
d=os.listdir(pth)
files=[]
drs=[]
files=get_file_names(pth)
drs=get_dir_names(pth)
for i in d:
if i in files:
files.append(i)
else:
drs.append(i)
for i in files:
s=open(i).read(120)
print "Первые 120 байт файла %s" % i
p=open(i,'r+')
p.seek(10)
p.read(1)
print "11-ый байт c начала файла %s" % i
p.seek(10)
p.read(5)
print "содержание-посл-сть символов с 11 по 16 байт c начала файла %s" % i
p.read(-5)
p.read(5)
print "Последние 5 байт c конца файла %s" % ifor i in drs:
remfile(i)remfile('/mnt/files/')
-------выходит ошибка на строке s=open(i).read(120)
TypeError: coercing to Unicode: need string or buffer, bool found
Как это можно исправить?и почему эта ошибка выходит?
>[оверквотинг удален]
> p.read(5)
> print "Последние 5 байт
> c конца файла %s" % i
> for i in drs:
> remfile(i)
> remfile('/mnt/files/')
> -------
> выходит ошибка на строке s=open(i).read(120)
> TypeError: coercing to Unicode: need string or buffer, bool found
> Как это можно исправить?и почему эта ошибка выходит?????
import osfor root, dirs, files in os.walk('/mnt/files'):
print '--- Directory: %s ---' % root
for f in files:
f = os.path.join(root,f)
if os.path.islink(f):
continue
with open(f, 'rb') as f:
data1 = f.read(10)
print 'first 10 bytes of %s is %s' % (f, data1)
Спасибо!Заработало!
Последний вопрос только:
а как допустим прочитать последовательность байт допустим с 33-50 байт и сравнить допустим со значением символьным?
так?
data1 = f.read(33:50)
if data1=='hry':
print 'Sovpadaet'
else:
print 'Ne sovpadaet'
> Спасибо!Заработало!
> Последний вопрос только:
> а как допустим прочитать последовательность байт допустим с 33-50 байт и сравнить
> допустим со значением символьным?
> так?
> data1 = f.read(33:50)
> if data1=='hry':
> print 'Sovpadaet'
> else:
> print 'Ne sovpadaet'f.seek(32)
data = f.read(18)
if data == 'something':
print 'sovpadaet'
если я добавляю после строки:
data1 = f.read(10)
строку:
os.remove(f)
Снова выходит ошибка TypeError((
> если я добавляю после строки:
> data1 = f.read(10)
> строку:
> os.remove(f)
> Снова выходит ошибка TypeError((import os
for root, dirs, files in os.walk('/mnt/files'):
print '--- Directory: %s ---' % root
for f in files:
fn = os.path.join(root,f)
if os.path.islink(fn):
continue
with open(fn, 'rb') as f:
data1 = f.read(10)
if data1 == 'something':
os.remove(fn)
Спасибо!)
Всё заработало!Очень подмогли!
А как ещё выводить в консоль информацию,помимо какой файл удалён информацию-какой пользователь удалил, с какого ip-адреса,и во сколько+дата(только на рус яз месяц и день)?
Это порой очень важно,когда ведёшь аудит.