Имя: Пароль:
IT
 
Python. Реализация механизмов cat * и awk
0 xXeNoNx
 
12.09.18
11:20
Всем привет!
Осваиваю данный язык. Появились некоторые вопросы:
1. Как реализовать аналог команды cat *? - чтение файлов(НЕСКОЛЬКИХ!!!) в текущей директории по шаблону?
2. Как сделать свертку входных данных, аналогично как делает это awk:
вход:
1 - 10
2 - 5
3 - 5
2 - 10
1 - 20

ВЫХОД:
1 - 30
2 - 15
3 - 5

Спасибо за ответы!
1 Кирпич
 
12.09.18
11:25
форумом ошибся
2 xXeNoNx
 
12.09.18
11:26
(1) утверждение не вдохновляет!
3 xXeNoNx
 
12.09.18
11:27
+(2) Особенно после этого Вопрос к знатокам Си++ (Си)
4 Кирпич
 
12.09.18
11:28
(3) ну вот учись на чужих ошибках

https://www.ibm.com/developerworks/ru/library/l-python_part_8/
5 Вафель
 
12.09.18
11:28
а что в питоне нет findFiles или аналога?
6 xXeNoNx
 
12.09.18
11:30
(5) хотелось бы лакончино), как cat, ну или хотя бы "open('регулярка')"
7 Кирпич
 
12.09.18
11:30
(5) да есть там всё. просто лень гуглить
8 Кирпич
 
12.09.18
11:32
Вот из (4)

В следующем примере сделана интерпретация системной утилиты grep. В текущем каталоге будут найдены файлы с питоновским расширением, в которых будет найдена поисковая строка 'import os':


import os, sys, fnmatch

mask = '*.py'
pattern = 'import os'

def walk(arg,dir,files):
   for file in files:
     if fnmatch.fnmatch(file,mask):
        name = os.path.join(dir,file)
        try:
          data = open(name,'rb').read()
          if data.find(pattern) != -1:
            print name
        except:
            pass    
os.path.walk('.',walk,[])
9 xXeNoNx
 
12.09.18
11:39
(8) пасиб
10 Вафель
 
12.09.18
11:41
(8) хреновый конечно код.
поиск файлов лучше сразу по маске делать,сами файлы обрабатывать построчно
11 Кирпич
 
12.09.18
11:43
(9) А для всяких извращений с данными вот такое там придумано https://khashtamov.com/ru/pandas-introduction/
12 Кирпич
 
12.09.18
11:45
13 Кирпич
 
12.09.18
11:45
короче полный гугл
14 Glup0sti
 
12.09.18
12:00
cat *.txt | gawk -F'-' '{D[$1]+=$2} END {for(i in D) print i":"D[i]}'
15 Glup0sti
 
12.09.18
12:05
ой, вообще ересь написал не в тему
Закон Брукера: Даже маленькая практика стоит большой теории.