Гид по технологиям

Чтение и запись файлов в JES — практическое руководство

5 min read Программирование Обновлено 05 Dec 2025
Чтение и запись файлов в JES
Чтение и запись файлов в JES

Стопка бумажных документов в офисе

JES — это среда программирования для локального запуска кода, редактирования изображений и работы с медиа. Она также предоставляет удобные встроенные функции для работы с файлами: выбирать файлы через диалоги, открывать их, читать содержимое и записывать новые данные.

Определения в одну строку:

  • JES: среда программирования, часто используемая в образовательных задачах.
  • CSV: текстовый формат с ячейками, разделёнными запятыми.
  • Кодировка: схема представления символов в файле (например, UTF‑8).

Как читать файл в JES

Ниже — компактный и проверенный пример функции, которая позволяет выбрать файл через диалог, проверить расширение, прочитать файл целиком и затем разбить его на строки или на числовые значения в случае CSV.

Пример функции readFromFile():

def readFromFile():
    # Попросить пользователя выбрать файл через диалог JES
    file = pickAFile()

    # Проверить расширение — поддерживаем .txt и .csv
    if not file.endswith(".txt") and not file.endswith(".csv"):
        print("Error: Only .txt and .csv files are supported.")
        return

    # Открыть файл в текстовом режиме для чтения
    openedFile = open(file, "rt")

    # Считать всё содержимое в строку
    allContent = openedFile.read()

    # Закрыть файл
    openedFile.close()

    # Разбить на строки
    if file.endswith(".txt"):
        rows = allContent.split("\n")
        print(rows)

    # Разбить CSV: строки -> ячейки -> числа
    if file.endswith(".csv"):
        rows = allContent.split("\n")
        csvData = []
        for row in rows:
            if (row != ''):
                cells = row.split(",")
                # Попытаться превратить ячейки в числа
                try:
                    csvData.append([float(cell) for cell in cells])
                except ValueError:
                    # Если не все ячейки числовые — сохранить как строки
                    csvData.append([cell for cell in cells])
        print(csvData)

Ключевые моменты и пояснения:

  • pickAFile() открывает диалог выбора файла в JES. Путь возвращается как строка.
  • open(file, “rt”) — режим “r” (read) + “t” (text). При необходимости указывайте кодировку: open(file, “rt”, encoding=”utf-8”).
  • Для больших файлов лучше не читать весь файл в память. Альтернатива — читать построчно в цикле.

Пример входного текстового файла sample.txt:

This is the start of the file
This is another line
This is the third line
This is the end of the file

Пример CSV с числами и строками

После загрузки программы в JES (кнопка Load Program) вызовите функцию в командной строке:

readFromFile()

Выберите sample.txt — в консоли вы увидите массив строк. Затем вызовите снова и выберите numbers.csv — получите вложенный массив значений.

Кнопка загрузки программы в интерфейсе JES

Результат в консоли: строки текстового файла как массив

Результат в консоли: CSV как вложенный массив

Как записывать в файл в JES

В JES для записи используется функция write через открытие файла в режимах “a” (append) или “w” (write — перезапись). Ниже — функция для добавления строк в текстовый файл и добавления строки в CSV.

Пример функции writeToFile():

def writeToFile():
    file = pickAFile()

    # Открыть файл для добавления строк (append)
    openedFile = open(file, "at", encoding="utf-8")

    # Записать дополнительные строки (для .txt)
    if file.endswith(".txt"):
        openedFile.write("\nTesting")
        openedFile.write("\nTesting1\nTesting2")
        openedFile.write("\nTesting3")

    # Для .csv: добавить новую строку с разделителем ","
    if file.endswith(".csv"):
        openedFile.write("\n12,34,56")

    openedFile.close()
    print("Wrote to file successfully")

Если хотите перезаписать файл целиком, используйте режим “w” вместо “at”: open(file, “w”, encoding=”utf-8”). После завершения работы проверьте файл в текстовом редакторе или табличной программе.

Результат записи в текстовый файл

Результат записи в CSV файл

Рекомендации и лучшие практики при работе с файлами

  • Всегда указывайте кодировку при открытии файла, особенно если есть не‑ASCII символы: open(path, “rt”, encoding=”utf-8”).
  • Для больших файлов не используйте read() — читайте построчно в цикле: for line in openedFile: …
  • Для корректного разбора CSV используйте стандартный модуль csv, он учитывает экранирование, кавычки и разделители.
  • При преобразовании строк в числа используйте try/except, чтобы обработать некорректные ячейки.
  • Закрывайте файлы явно или используйте конструкцию with (если она поддержуется в вашей версии JES):
with open(file, "rt", encoding="utf-8") as f:
    for line in f:
        process(line)
  • В Windows строки могут заканчиваться “\r\n”, в Unix — “\n”. При разбиении строк используйте метод splitlines() для универсальности: rows = allContent.splitlines().
  • Для табличных данных рассмотрите Pandas для более сложной обработки: pd.read_csv(path).
  • Если файл содержит персональные данные, применяйте минимизацию и шифрование — см. раздел о безопасности далее.

Частые ошибки и отладка

  • Ошибка UnicodeDecodeError: укажите правильную кодировку при открытии.
  • ValueError при преобразовании в float: проверьте содержимое ячеек и разделители (в некоторых локалях разделителем дробной части может быть запятая).
  • FileNotFoundError: убедитесь, что путь возвращаемый pickAFile() корректен, и у программы есть права на чтение/запись.
  • Неправильный парсинг CSV при наличии кавычек и запятых внутри ячеек: используйте csv.reader или pandas.read_csv.

Совет по логированию: выводите небольшие отладочные сообщения (print) с размерами данных: количество строк, первые 5 строк и т. п.

Безопасность и конфиденциальность

Important: при работе с файлами, содержащими личные данные, соблюдайте местные правила обработки персональной информации. Не храните логина/пароли в открытом виде и избегайте записи чувствительных данных в общедоступные файлы.

Альтернативные подходы

  • Модуль csv (стандартный): корректно обрабатывает кавычки, экранирование и разные разделители.
  • Pandas: удобен для аналитики и больших таблиц, предоставляет фильтрацию, агрегацию и конвертацию типов.
  • openpyxl / xlrd / xlwt: работа с Excel‑файлами .xlsx/.xls.

Пример чтения CSV через csv.reader:

import csv

def read_csv_with_module(path):
    with open(path, "rt", encoding="utf-8") as f:
        reader = csv.reader(f)
        for row in reader:
            print(row)

Когда предложенный подход не годится

  • Очень большие файлы (сотни мегабайт и более): считывание в память не подходит — используйте потоковую обработку или инструменты типа Dask.
  • Сложные CSV с кавычками, переносами строк в ячейках: используйте csv.reader или pandas.
  • Excel‑форматы: используйте openpyxl или pandas.read_excel.

Роли: чек‑лист ответственности

  • Разработчик:

    • Проверил кодировку и режимы открытия файла.
    • Обработал исключения чтения/записи.
    • Написал тесты на граничные случаи.
  • Преподаватель / тренер:

    • Подготовил sample.txt и numbers.csv с контрольными данными.
    • Подготовил инструкцию по запуску в JES.
  • Аналитик данных:

    • Проверил целостность и формат столбцов.
    • Убедился, что отсутствуют пропущенные значения или указал правила их обработки.

Тестовые сценарии и критерии приёмки

Критерии приёмки:

  • Функция корректно читает .txt и возвращает список строк.
  • Функция корректно читает .csv и возвращает вложенный список (числа или строки).
  • При выборе неподдерживаемого файла пользователь получает понятное сообщение об ошибке.
  • Файлы корректно закрываются в любом случае (включая ошибочные ситуации).

Тестовые сценарии:

  1. Открыть пустой .txt — вернуть пустой список.
  2. Открыть .txt с несколькими строками — вернуть все строки в правильном порядке.
  3. Открыть .csv с числами — каждая строка преобразуется в список чисел.
  4. Открыть .csv с нечисловыми полями — сохранение строк для таких полей.
  5. Выбрать файл с неправильным расширением — получить сообщение об ошибке.

Краткая методика внедрения

  1. Спроектируйте формат входных файлов (какой разделитель, есть ли заголовок).
  2. Напишите небольшие функции чтения/валидирования каждой строки.
  3. Добавьте тесты на примерах (sample.txt, numbers.csv).
  4. Перейдите к потоковой обработке, если объём данных растёт.

Глоссарий в одну строку

  • JES — среда для обучения и выполнения кода.
  • CSV — текстовый табличный формат.
  • Кодировка — способ представления символов в файле.
  • pickAFile() — диалог выбора файла в JES.

Резюме

  • JES удобно использовать для быстрого чтения и записи .txt и .csv файлов.
  • Для простых задач достаточно open/read/write; для более надёжного парсинга CSV используйте csv или pandas.
  • Обратите внимание на кодировки, переносы строк и обработку исключений при работе с реальными данными.

Если нужно, могу подготовить готовые шаблоны функций с обработкой ошибок и логированием для вашей версии JES или привести примеры с использованием csv и pandas.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Транслировать экран iPhone на Amazon Fire TV
How-to

Транслировать экран iPhone на Amazon Fire TV

Контейнерные запросы CSS — адаптивные компоненты
Frontend

Контейнерные запросы CSS — адаптивные компоненты

Скриншоты на Galaxy S22 — все способы
Мобильные

Скриншоты на Galaxy S22 — все способы

Изменить путь папки в SyncToy — руководство
Software

Изменить путь папки в SyncToy — руководство

Как исправить слишком громкий звук в Windows
Техническая поддержка

Как исправить слишком громкий звук в Windows

Среднее массива — примеры на Python, C++, JS, C
Алгоритмы

Среднее массива — примеры на Python, C++, JS, C