Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ОТЧЕТ ЕПИФАНОВ

.docx
Скачиваний:
0
Добавлен:
22.04.2024
Размер:
1.15 Mб
Скачать

Федеральное агентство связи

Ордена трудового красного знамени федеральное государственное

бюджетное образовательное учреждение высшего образования

«Московский технический университет связи и информатики»

ОТЧЕТ

Выполнил студент:

Епифанов Георгий

Проверил:

Анисимов М.А

Цель работы:

10.0

  1. Текст - CSV документ.

Данная программа должна уметь преобразовать простой текстовый файл с данными (данные будут виде таблицы) в CSV файл. Программа должна быть как можно более обобщённая, также программа должна правильно интерпретировать тип данных.

Листинг 10

import csv def process_data(input_filename, output_filename): try: with open(input_filename, 'r') as input_file: lines = input_file.readlines() # Определение разделителя (первый непробельный символ в первой строке) delimiter = next((c for c in lines[0] if not c.isspace()), ',') # Использование csv.reader для определения структуры таблицы reader = csv.reader(lines, delimiter=delimiter) header = next(reader) # Определение типов данных в столбцах column_types = [type(value) for value in next(zip(*reader))] # Преобразование данных и запись в CSV with open(output_filename, 'w', newline='') as output_file: writer = csv.writer(output_file) writer.writerow(header) for line in lines[1:]: row = line.strip().split(delimiter) converted_row = [] for value, data_type in zip(row, column_types): try: converted_value = data_type(value) converted_row.append(converted_value) except ValueError: converted_row.append(value) writer.writerow(converted_row) print(f"Data successfully processed and saved to {output_filename}") except Exception as e: print(f"Error: {e}") # Пример использования input_filename = 'E:\\T.txt' output_filename = 'E:\\T.csv' process_data(input_filename, output_filename)

10.1

import csv from fractions import Fraction def calculate(expression, precision): try: result = eval(expression) if isinstance(result, float): result = round(result, precision) elif isinstance(result, Fraction): result = round(result, precision).limit_denominator() return result except Exception as e: print(f"Error during calculation: {e}") return None def calculate_column_sum(data, column_index, precision): try: column_values = [float(row[column_index]) for row in data] result = sum(column_values) return round(result, precision) except ValueError as ve: print(f"Error calculating column sum: {ve}") return None def process_data(input_filename, output_filename, calculator_expression, precision): try: with open(input_filename, 'r') as input_file: lines = input_file.readlines() # Определение разделителя (первый не пробельный символ в первой строке) delimiter = next((c for c in lines[0] if not c.isspace()), ',') # Использование csv.reader для определения структуры таблицы reader = csv.reader(lines, delimiter=delimiter) header = next(reader) # Преобразование данных data = [list(row) for row in lines[1:]] # Вычисление суммы для каждой колонки с использованием калькулятора for i, col_header in enumerate(header): if col_header.startswith("С помощью калькулятора"): expression = col_header.split('\n')[1] result = calculate(expression, precision) if result is not None: header[i] = f"{col_header} = {result}" for row in data: row[i] = result else: sum_result = calculate_column_sum(data, i, precision) if sum_result is not None: header[i] = f"{col_header} (Sum) = {sum_result}" # Запись в CSV with open(output_filename, 'w', newline='') as output_file: writer = csv.writer(output_file) writer.writerow(header) writer.writerows(data) print(f"Data successfully processed and saved to {output_filename}") except Exception as e: print(f"Error: {e}") # Пример использования input_filename = 'E:\\T.txt' output_filename = 'E:\\T_processed.csv' calculator_expression = input("Enter calculator expression: ") precision = int(input("Введите точность для расчетов: ")) process_data(input_filename, output_filename, calculator_expression, precision)

Задание Общее

  1. Создаем простой ЭХО сервер

  2. import socket import csv from fractions import Fraction def calculate(expression): try: result = eval(expression) if isinstance(result, float): result = round(result) elif isinstance(result, Fraction): result = round(result).limit_denominator() return result except Exception as e: print(f"Ошибка при вычислении: {e}") return None def calculate_column_sum(data, column_index): try: column_values = [float(row[column_index]) for row in data] result = sum(column_values) return round(result) except ValueError as ve: print(f"Ошибка при вычислении суммы столбца: {ve}") return None def process_data(input_data, calculator_expression): try: # Разделение входных данных на строки lines = input_data.split('\n') # Определение разделителя (первый непробельный символ в первой строке) delimiter = next((c for c in lines[0] if not c.isspace()), ',') # Использование csv.reader для определения структуры таблицы reader = csv.reader(lines, delimiter=delimiter) header = next(reader) # Преобразование данных data = [list(row) for row in lines[1:]] # Вычисление суммы для каждой колонки с использованием калькулятора for i, col_header in enumerate(header): if col_header.startswith(calculator_expression): expression = col_header.split('\n')[1] result = calculate(expression) if result is not None: header[i] = f"{col_header} = {result}" for row in data: row[i] = result else: sum_result = calculate_column_sum(data, i) if sum_result is not None: header[i] = f"{col_header} (Сумма) = {sum_result}" # Запись в CSV output_data = [delimiter.join(header)] + [delimiter.join(map(str, row)) for row in data] output_data = '\n'.join(output_data) return output_data except Exception as e: print(f"Ошибка: {e}") return None def echo_server(host, port): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as server_socket: server_socket.bind((host, port)) server_socket.listen() print(f"Сервер слушает на {host}:{port}") while True: conn, addr = server_socket.accept() with conn: print(f"Подключено клиентом {addr}") data = conn.recv(1024).decode('UTF-8') print(f"Получены данные:\n{data}") calculator_expression = input("Введите выражение для калькулятора (например, 'сумма', 'ср.знач.'): ") processed_data = process_data(data, calculator_expression) if processed_data is not None: # Отправка обработанных данных обратно клиенту conn.sendall(processed_data.encode('UTF-8')) if __name__ == "__main__": host = '127.0.0.1' port = 12345 echo_server(host, port)

  1. Создаем код для клиента

import socket import os def send_data_to_server(host, port, data): with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as client_socket: client_socket.connect((host, port)) # Отправка данных на сервер client_socket.sendall(data.encode('utf-8')) # Получение данных от сервера received_data = client_socket.recv(1024).decode('utf-8') return received_data if __name__ == "__main__": host = '127.0.0.1' port = 12345 # Получение пути к текстовому файлу от пользователя txt_file_path = input("Введите путь к файлу: ") # Чтение данных из текстового файла with open(txt_file_path, 'r') as txt_file: data_to_send = txt_file.read() # Отправка данных на сервер и получение ответа received_data = send_data_to_server(host, port, data_to_send) print(f"Received from server: {received_data}")

  1. Запускаем ЭХО

  2. Запускаем клиента

  1. Принимаем ответ

Задание 2

Ч1

Ч2

Ч3

+0

+5

+6

+7

Москва,2023

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