Уведомления

Группа в Telegram: @pythonsu

#1 Окт. 1, 2015 09:25:00

endy1
Зарегистрирован: 2015-10-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файлов на Python`е

Друзья, нужна ваша помощь. Дали мне задание написать скрипт на Python`е. Я немного писал на bash, но в любом случае я не капли не программист. Изучаю, но пока дается все со скрипом.


1. Есть каталоги пользователей /home/ftp/users/*/ В них могут появляться файлы с окончанием .file
2. Нужно пройти эти каталоги, отыскать эти файлы.
3. Затем парсить каждый из их по ключевому слову “image”
4. И вывести список файлов на экран в виде нумерованного списка + напротив имени некотрые параметры которые следуют за словом image.

Наверняка для опытного программиста это задача не представляет сложности. Поможете?

Офлайн

#2 Окт. 1, 2015 09:43:31

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Парсинг файлов на Python`е

endy1
Поможете?
Понятие “помощь” подразумевает активное участие нуждающегося в помощи.
Сейчас вы просите не помочь написать программу, а сделать вашу работу за вас.



Офлайн

#3 Окт. 1, 2015 11:25:44

endy1
Зарегистрирован: 2015-10-01
Сообщения: 2
Репутация: +  0  -
Профиль   Отправить e-mail  

Парсинг файлов на Python`е

Да, ув. FishHook. Вы правы. Может быть найдется человек, который поможет написать эти 6-7 строчек кода.
Собственно обход каталогов у меня получилось сделать. И даже парсится текст из файлов. Но выводится весь текст, а мне нужно, чтобы только то, что в паттерне.

#!/usr/bin/env python
import glob
import sys
import re
path = '/opt/sftp/users/*/*.request'
pattern = 'image_file'
files=glob.glob(path)
for file in files:
        f=open(file, 'r')
        a = sys.stdout.write(f.read())
        f.close()

Отредактировано endy1 (Окт. 1, 2015 11:36:34)

Офлайн

#4 Окт. 1, 2015 12:13:48

py.user.next
От:
Зарегистрирован: 2010-04-29
Сообщения: 9890
Репутация: +  854  -
Профиль   Отправить e-mail  

Парсинг файлов на Python`е

>>> def search_files(path, pat):
...     return ['a.txt', 'b.txt']
... 
>>> def parse_files(seq):
...     return map(get_info, seq)
... 
>>> def get_info(fname):
...     return fname + ' info'
... 
>>> def print_table(seq):
...     for n, (c1, c2) in enumerate(seq, 1):
...         print('{:03} {} <{}>'.format(n, c1, c2))
... 
>>> def f():
...     dirpath = '/path'
...     pattern = 'pattern'
...     
...     files = search_files(dirpath, pattern)
...     infos = parse_files(files)
...     print_table(zip(files, infos))
... 
>>> f()
001 a.txt <a.txt info>
002 b.txt <b.txt info>
>>>



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version