|
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
|
|
|
4
Кирпич
12.09.18
✎
11:28
|
(3) ну вот учись на чужих ошибках
|
|
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) А для всяких извращений с данными вот такое там придумано
|
|
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
|
ой, вообще ересь написал не в тему
|
|
Глупец, лишенный способности посмеяться над собой вместе с другими, не сможет долго выносить программирование. Фредерик Брукс-младший