The OpenNET Project / Index page

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

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

"как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от Гриша on 01-Мрт-12, 06:12 
Всем привет!)
в директории /mnt/files/ имеется отдельные файлы и каталоги с файлами.
Вот написал скрипт на питоне:
-------
# -*- coding: utf-8 -*-
import os

def 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" % 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


Как это можно исправить?и почему эта ошибка выходит?

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

Оглавление

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


1. "как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от Гриша on 02-Мрт-12, 07:20 
>[оверквотинг удален]
>         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
> Как это можно исправить?и почему эта ошибка выходит?

????

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

2. "как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от crick13 on 05-Мрт-12, 17:36 
import os

for 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)

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

3. "как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от Гриша on 06-Мрт-12, 04:18 
Спасибо!Заработало!
Последний вопрос только:
а как допустим прочитать последовательность байт допустим с 33-50 байт и сравнить допустим со значением символьным?
так?
data1 = f.read(33:50)
if data1=='hry':
    print 'Sovpadaet'
else:
    print 'Ne sovpadaet'

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

5. "как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от crick13 (ok) on 06-Мрт-12, 09:34 
> Спасибо!Заработало!
> Последний вопрос только:
> а как допустим прочитать последовательность байт допустим с 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'

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

4. "как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от Гриша on 06-Мрт-12, 04:56 
если я добавляю после строки:
data1 = f.read(10)
строку:
os.remove(f)
Снова выходит ошибка TypeError((

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

6. "как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от crick13 (ok) on 06-Мрт-12, 09:37 
> если я добавляю после строки:
> 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)    

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

7. "как исправить ошибку в скрипте на питоне TypeError"  +/
Сообщение от Гриша on 08-Мрт-12, 11:05 
Спасибо!)
Всё заработало!Очень подмогли!
А как ещё выводить в консоль информацию,помимо какой файл удалён информацию-какой пользователь удалил, с какого ip-адреса,и во сколько+дата(только на рус яз месяц и день)?
Это порой очень важно,когда ведёшь аудит.

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

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

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




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

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