Как передать файл .txt в функцию в Python?
Меня просят создать функцию, которая принимает строковый аргумент, создает и возвращает кортеж, содержащий сведения о человеке, указанном в строке (например, имя, фамилия и зарплата). Строка с макетом: имя, фамилия, зарплата. Затем мне нужно создать еще одну функцию, которая принимает кортеж в качестве аргумента и печатает сведения о человеке в полях фиксированной ширины в одной строке с этим макетом: зарплата, имя, фамилия. Важно отметить, что строки должны быть взяты из файлового ввода, которое дает пользователь. Вот что я попробовал:
Мы будем благодарны за любую помощь, потому что я полностью потерялся. Заранее спасибо.
4 ответа
Давайте преобразуем эту задачу во многие маленькие и проще решать задачи.
Первая функция
Эта функция принимает строку, разбивает ее на пробелы и возвращает кортеж. Обратите внимание, что проверка ошибок не проводилась. Позже вы должны проверить правильность ввода.
Вторая функция
Здесь вы присоединяете кортеж обратно в строку. Прежде чем вы сможете присоединиться, вам нужно преобразовать каждый элемент в строку ( str(i) ).
Чтение из файла
Для чтения вы должны использовать с. Это гарантирует, что файл всегда закрыт, когда он больше не используется.
Открытие файла:
Путь к файлу должен быть либо относительно вашего текущего рабочего каталога (где находится ваш скрипт), либо абсолютным.
Разница между файлом и путем
Существует разница между путем к файлу ( path_to_file ) и фактически открытым файлом ( file ). Путь может быть введен пользователем, и вы должны использовать его, чтобы открыть файл. Пользователь не может ввести файловый объект.
Возможное сравнение, которое легче понять, может быть следующим: Подумайте о публичной библиотеке: в библиотеке есть книги, и у каждой книги есть название. Если вы хотите прочитать книгу, вам нужно найти эту книгу по названию, получить образец, открыть ее и прочитать. В этом примере название книги — это имя файла , а книга — это файл .
Чтение из файла и вызов функции
Теперь последний шаг — собрать все вещи вместе. Поэтому сначала прочитайте из файла, а затем вызовите ранее созданные функции. Чтение зависит от вашей файловой структуры. Я просто предполагаю, что у вас есть в каждой строке данные для нового человека.
Если у вас есть какие-либо вопросы к части, пожалуйста, задавайте их в комментариях.
Редактировать
Корректировки на основе содержимого файла
Одна строка в файле выглядит следующим образом: Челси правый защитник Давиде Заппакоста 20 000 000
Вам нужно расширить кортежи:
Оригинал: first_name, last_name, salary
Новый: team, position, first_name, last_name, salary
Примечание: пока просто сохраняйте зарплату как строку s и не конвертируйте ее в int или float.
Оригинал: return first_name, last_name, int(salary)
Новый: return team, position, first_name, last_name, salary
Оригинал: string_person = » «.join(str(i) for i in person_tuple)
Новый: string_person = » «.join(person_tuple)
Ресурсы
Просто в верхней части моей головы, плавник является переменной, но вы передаете его в виде простой текстовой строки
Вам нужно написать fin = open(file, «wt») в вашем try утверждении. wt в конце означает, что вы пишете , используя текст (вы также можете писать в двоичном виде)
Позже вам нужно поставить my_str = open(fin, ‘r’) , поскольку fin является объектом, а не именем фактического файла.
Передача имени файла как параметра в программу на Python
У меня есть код программы на Python, программу я запускаю через терминал и входные данные у меня находятся в файле input.txt, как мне в качестве аргумента передать название файла и чтобы это заработало?
![]()
![]()
При таком запуске
python script.py input.txt или таком
script.py input.txt
![]()
Дизайн сайта / логотип © 2023 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2023.3.11.43304
Нажимая «Принять все файлы cookie» вы соглашаетесь, что Stack Exchange может хранить файлы cookie на вашем устройстве и раскрывать информацию в соответствии с нашей Политикой в отношении файлов cookie.
Потоки. Передача файлов. Клиент-серверный чат¶
Потоки (thread) в Python позволяет одновременно запускать разные подпрограммы, таким образом становится возможно выполнять несколько подпрограмм в одно и то же время. thread — это отдельный поток выполнения.
На самом деле подпрограммы даже при использовании потоков не выполняются одновременно:
-
Работа с потоками — это не работа с разными ядрами процесса, мы фактически работаем внутри того же процесса, что и без потоков, только дробим его на подзадачи, так что о более эффективном распределении ресурсов речи не идёт.
-
В Python для обеспечения стабильности и снижения конфликтов работает специальный шлюз — Global Interpreter Lock (GIL). Он и контролирует потоки.
GIL переключает потоки по умолчанию раз в 5 миллисекунд, так что потоки работают не одновременно, а последовательно, постоянно сменяя друга.
Самая близкая идея работе потоков в Питоне — сеанс одновременной игры в шахматы, когда один шахматист играет с несколькими. Сеанс хоть и называется “одновременным”, но фактически шахматист обходит всех по очереди и делает свой ход в каждой партии.
Для работы с потоками используются модули _thread и threading (более новый).
Рассмотрим простой код для работы с потоками.:
Передача файлов¶
Настраиваем сокет, устанавливаем соединение.
На отправляющей стороне:
открываем файл на чтение в режиме байтового чтения ( ‘rb’ ).
построчно передаём файл принимающей стороне.
На принимающей стороне:
открываем файл на запись в режиме байтовой записи ( ‘wb’ ).
построчно пишем в файл всё, что получаем от передающей стороны.
Закрываем файлы и соединение.
Передача файлов байтовыми строками позволяет пересылать любые файлы, независимо от их типа, расширения и т.п.
Как передать изображение в функцию Python из JS eel?
Я использую модуль Python eel для создания простого приложения, которое принимает изображение через WEB интерфейс и сохраняет его в новом файле через Python. При передаче переменной с файлом в функцию Python, я получаю следующую ошибку
TypeError: expected str, bytes or os.PathLike object, not dict
Насколько я понимаю, Python воспринимает изображение как словарь, который нельзя сохранить в файл, так как функция open() принимает str, bytes or os.PathLike object
Вопрос в том, как правильно передавать изображение из JS в Python, чтобы с ним можно было дальше работать, например сохранять как новый файл?