LinuxForum.Fans
Тема

Самый быстрый способ выборки случайного файла из директории

Автор: valet 52 сообщений 10605 просмотров
#300186

"Fat-Zer" написал:
пользуйся башем или изучай питон...
да я и пользуюсь вообще-то :)
Просто был приведен пример сначала одного питон-скрипта - ошибка, потом другого вроде как с иправлением - тоже не работает :)
У меня видать питон какой-то неправильный раз вы говорите УМВР :)
#300195

Либо опишите задачу полностью. Что должен делать сторонний скрипт? Тогда можно попробовать всё на Python переписать, без костылей...

"valet" написал:
Просто был приведен пример сначала одного питон-скрипта - ошибка, потом другого вроде как с иправлением - тоже не работает

Я первый вариант и исправил - Самый быстрый способ выборки случайного файла из директории

#300198

"-=Serj=-" написал:
Неа:)
я вижу ))
#300207
"-=Serj=-" написал:
Либо опишите задачу полностью. Что должен делать сторонний скрипт? Тогда можно попробовать всё на Python переписать, без костылей
Я это сделал еще в первом посте.

Задача такая - имеется один скрипт, который постоянно складывает файлы в каталог html_in. Второй скрипт обрабатывает sed'ом файлы из html_in и ложит их в html_out
#300208
"valet" написал:
Второй скрипт обрабатывает sed'ом файлы из html_in и ложит их в html_out
"-=Serj=-" написал:
Что должен делать сторонний скрипт?

Что делает этот второй скрипт?

#300243
"-=Serj=-" написал:
Что делает этот второй скрипт?
Убирает из файла все теги

<strong> </strong> <b> </b>

И прописывает все ссылки через редирект

Вот код этого sed-скрипта:

text
#!/bin/sed -rf

s~</b>~∑</b>~gi s~<b>([^∑]+)∑</b>~\1~gi s~</strong>~∑</strong>~gi s~<strong>([^∑]+)∑</strong>~\1~gi s~(href=")([^"]+)~target="_blank" href="http://site.ru/redir.php?\2~gi s~∑~~gi

#300263

Я sed не знаю, поэтому здесь

"valet" написал:
прописывает все ссылки через редирект

поподробнее. Ко всем ссылкам добавляет

text
http://site.ru/redir.php?

?

#300273
"-=Serj=-" написал:
именно так
то есть каждое вхождение:

href="http://

меняется на

href="http://site.ru/redir.php?http://
#300285

Пробуйте

text

#!/usr/bin/env python
#-*- coding: utf-8 -*-

from os import listdir, remove from os.path import isfile, join from re import compile

PATT = compile(r'<b>|</b>|<strong>|</strong>') PATT2 = compile(r'href=\"(.+?)\"')

def conv(f): desc = open(join('./html_in', f), 'r') data = desc.read() data = PATT.sub('', data) data = PATT2.sub(r'href="http://site.ru/redir.php?\1"', data) desc.close() desc = open(join('./html_out', f), 'w') desc.write(data) desc.close() remove(join('./html_in', f))

while True: files = listdir('./html_in') if len(files) > 0: for f in files: if isfile(f): conv(f) else: break

Скрипт запускать из директории, содержащей html_in и html_out.

#300679

Не работает.
Запустил, все это очень долго стояло, я думал шуршит, а потом думаю дай гляну сколько уже сделало - смотрю в html_out - а там пусто.
на Ctrl+C убил скрипт - выдало следующее:

text
$ ./start 
^CTraceback (most recent call last):
  File "./start", line 26, in <module>
    if isfile(f):
  File "/usr/lib/python2.6/genericpath.py", line 31, in isfile
    return False
KeyboardInterrupt
#300691

Попробуйте убрать эту проверку

"-=Serj=-" написал:
if isfile(f):
#300704

"-=Serj=-" написал:
Попробуйте убрать эту проверку
Спасибо, так работает и похоже правильно.
Позже потестирую еще по скорости, но на глазок опять таки Питон рулит!
Войдите или зарегистрируйтесь, чтобы ответить.