Форум сайта python.su
0
Всем привет, прошу помочь (и научить на конкретном примере, дать толчок в решениях на сверку данных) которые в моей практике будут в дальнейшем скорее всего часто использоваться.
————–
Имеются файлы, в каждом сразу после времени, после запятой находится значение, которое нужно сравнить с остальными во всех файлах.
Определив максимальное значение среди всех файлов - вывести имя файла в консоль.
Прикреплённый файлы:
Выгрузки.rar (481,3 KБ)
Офлайн
1
import os import sys def find_max_value(fname): value = 0 with open(fname, encoding='cp866') as fn: try: for i in fn: v = int(i.split()[0].split(',')[1]) if v > value: value = v except IndexError: pass return {value: fname} def main(): dirname = os.path.abspath(sys.argv[1]) os.chdir(dirname) res = {} for i in os.listdir(dirname): res.update(find_max_value(i)) print(res.get(max(res))) if __name__ == "__main__": main()
Офлайн
857
AntonpythonТут надо открывать файл и пропускать его строки через фильтр с регулярным выражением, которое возвращает искомую подстроку. А потом уже для файла список всех подстрок брать и приводить каждую из них к целому числу. Дальше передаётся этот список чисел на функцию поиска максимума. И когда у тебя есть список пар (имя_файла, максимум_файла), эти пары уже анализируются на максимум среди максимумов.
дать толчок в решениях на сверку данных) которые в моей практике будут в дальнейшем
Отредактировано py.user.next (Дек. 8, 2018 10:55:35)
Офлайн
1
С моего нубского взгляда можно сделать так:
def parser(fname): reader = csv.reader(fname, delimiter='|') for i in reader: value = re.findall( r'^[^,]+,([\d]+)', i[0] )[0] ...
Отредактировано asgrom (Дек. 8, 2018 13:44:44)
Офлайн
857
asgromТы просто не видишь, как оно поменяется. Вот ты говоришь “подать файлик”, а завтра у него придёт поток тех же самых строк на сайт. То есть он может через requests взять эти строки, а дальше что? А дальше ему нужно будет сохранять их в файл, потому что ты наложил такое условие - что строки берутся из файла. Лишнее действие? Ну ладно, пофиг на лишнее действие. А теперь представь бесконечный поток строк, который всё идёт и идёт. Мы не можем в любой момент остановиться и посчитать, потому что у тебя она должна в файл всё сначала сохранить.
По-моему легче быстро накидать новый чем предусматривать все условия, которые могут возникнуть.
Отредактировано py.user.next (Дек. 9, 2018 02:23:37)
Офлайн
1
Я написал про данный случай.
А так я с тобой полностью согласен.
Офлайн
0
Спасибо, конечно)
Подскажите, пожалуйста, а как просто вывести список уникальных сочетаний файлов {значение и название} отсортированных по возрастанию значения в виде:
996 OBC.TskMdt3.prot.20181207_101506.txt
997 OBC.TskMdt2.prot.20181207_101903.txt
999 OBC.TskMdt2.prot.20181207_094916.txt
999 OBC.TskMdt3.prot.20181207_100517.txt
?
Офлайн
1
Antonpython
Подскажите, пожалуйста, а как просто вывести список уникальных сочетаний файлов {значение и название} отсортированных по возрастанию значения в виде:
996 OBC.TskMdt3.prot.20181207_101506.txt
997 OBC.TskMdt2.prot.20181207_101903.txt
999 OBC.TskMdt2.prot.20181207_094916.txt
999 OBC.TskMdt3.prot.20181207_100517.txt?
print(sorted(чего-то там))
Офлайн