Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 25, 2013 13:35:39

hea007
От:
Зарегистрирован: 2010-10-22
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

Помогите правильно расположить ЦИКЛЫ

В файле (words.txt) строки для поиска внутри файлах. Цикл почему то отработает только один раз.

# -*- coding: utf-8 -*-
import os
import csv
import sys
def f(file,s):
    with open(file, 'rb') as file1:
        s1=file1.read().upper()
        return s1.find(s.encode('utf-8').upper())
reader = csv.reader(open('words.txt'), quotechar='\n')
for root, dirs, files in os.walk("d:\\"):
    for filename in files:
        fullname = os.path.join(root, filename)
        for num,row in enumerate(reader):
            for s in row:
                print(fullname,s)
                w=f(fullname, s)
                if w > 0:
                    os.system('md '+'out\\'+'"'+s+'"')
                    os.system('copy "'+fullname+'" out\\'+'"'+s+'"'+'\\')
                    print('Строка: '+s+ '. В файле: '+fullname+ '. позиция: '+str(w))



Отредактировано hea007 (Дек. 25, 2013 13:37:41)

Офлайн

#2 Дек. 25, 2013 18:33:29

Master_Sergius
Зарегистрирован: 2013-09-12
Сообщения: 271
Репутация: +  7  -
Профиль   Отправить e-mail  

Помогите правильно расположить ЦИКЛЫ

Каша какая-то. Это что, надо сделать типа grep?



———————————————————————————
Мой блог о семействе *nix: http://nixtravelling.blogspot.com/

Офлайн

#3 Дек. 25, 2013 19:31:08

noob_saibot
Зарегистрирован: 2013-09-11
Сообщения: 495
Репутация: +  20  -
Профиль   Отправить e-mail  

Помогите правильно расположить ЦИКЛЫ

Вот так заработало:

# -*- coding: utf-8 -*-
import os
import csv
import sys
def f(file,s):
    with open(file, 'r') as file1:
        s1=file1.read().upper()
        return s1.find(s.encode('utf-8').upper())
for root, dirs, files in os.walk("D:/999/"):
    for filename in files:
        fullname = os.path.join(root, filename)
        reader = csv.reader(open('D:/katalog.txt'), quotechar='\n')
        for num,row in enumerate(reader):
            for s in row:
                print(fullname,s)
                w=f(fullname, s)
                if w>0:
                    os.system('md '+'out\\'+'"'+s+'"')
                    os.system('copy "'+fullname+'" out\\'+'"'+s+'"'+'\\')
                    print(u'Строка: '+s+ u'. В файле: '+fullname+ u'. позиция: '+str(w))
reader = csv.reader(open('Dkatalog.txt'), quotechar='\n') —- тупила. Я так понял csv.reader прогоняет все значения и заканчивает работу с txt, так что его надо опять запускать.

Зы. Только на свои директории поменяйте.

Зыы. И у вас находит заданное слово 1 раз далее выходит, просто вдруг заданное слово там не один раз…

Отредактировано noob_saibot (Дек. 25, 2013 19:37:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version