Как передать файл в функцию python
Перейти к содержимому

Как передать файл в функцию python

  • автор:

Как передать изображение в функцию 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, чтобы с ним можно было дальше работать, например сохранять как новый файл?

Получаю изображения из HTML

$(document).ready(function()< var dropZone = $('#upload-container'); dropZone.on('drag dragstart dragend dragover dragenter dragleave drop', function()< return false; >); dropZone.on('dragover dragenter', function() < dropZone.addClass('dragover'); >); dropZone.on('dragleave', function(e) < let dx = e.pageX - dropZone.offset().left; let dy = e.pageY - dropZone.offset().top; if ((dx < 0) || (dx >dropZone.width()) || (dy < 0) || (dy >dropZone.height())) < dropZone.removeClass('dragover'); >>); dropZone.on('drop', function(e) < dropZone.removeClass('dragover'); let files = e.originalEvent.dataTransfer.files; print_hello(files); >); $('#file-input').change(function() < let files = this.files; print_hello(files); >); >)

Передаю переменную из JS в Python:

async function print_hello(files)

Пытаюсь открыть и сохранить изображение в Python

import eel #import os #import json #from PIL import Image @eel.expose def start_func(file): with open(file, 'rb') as imgfile: output = open("file02.jpg","wb") output.write(imgfile.read()) output.close() return "Файл получен" eel.init("web") eel.start("uniq.html", size=(1080, 1080))
  • Вопрос задан более двух лет назад
  • 460 просмотров

Как сделать вызов функции из другого файла в python?

Чтобы сделать вызов функции из другого файла в python, ее необходимо сначала импортировать. Вы можете импортировать как весь файл(модуль), так и отдельно функции из него. Для импорта, каталог, в котором лежит файл, должен быть пакетом(package), то есть содержать в себе файл init.py .

Импорт модуля. В таком случае функции из модуля вызываются через точку:

from my_package import my_module # где my_package - пакет # my_module - искомый файл def main(): x = my_module.function() . 

Импорт конкретной функции из модуля:

from my_package.my_module import function def main(): x = function() . 

Передача имени файла как параметра в программу на Python

У меня есть код программы на Python, программу я запускаю через терминал и входные данные у меня находятся в файле input.txt, как мне в качестве аргумента передать название файла и чтобы это заработало?

Отслеживать
48.7k 17 17 золотых знаков 56 56 серебряных знаков 100 100 бронзовых знаков
задан 17 мар 2020 в 12:02
1,273 3 3 золотых знака 12 12 серебряных знаков 33 33 бронзовых знака

Например python3 main.py input.txt , тогда из sys.argv вытаскиваете путь к файлу input.txt , открываете его и работаете

17 мар 2020 в 12:07
Если же через input() хотите считывать, тогда: python3 main.py < input.txt 17 мар 2020 в 12:13

1 ответ 1

Сортировка: Сброс на вариант по умолчанию

При таком запуске
python script.py input.txt или таком
script.py input.txt

import sys try: file_name = sys.argv[1] # получаем 1й элемент списка (в примерах выше именно он отвечает за имя файла) except IndexError: file_name = 'input.txt' # если нам не передают имя файла, то "выбираем" его сами 

Python. Урок 12. Ввод-вывод данных. Работа с файлами

Follow us on Google Plus Follow us on rss

В уроке рассмотрены основные способы ввода и вывода данных в Python с использованием консоли, и работа с файлами: открытие, закрытие, чтение и запись.

Вывод данных в консоль

Один из самых распространенных способов вывести данные в Python – это напечатать их в консоли. Если вы находитесь на этапе изучения языка, такой способ является основным для того, чтобы быстро просмотреть результат свой работы. Для вывода данных в консоль используется функция print.

Рассмотрим основные способы использования данной функции.

>>> print("Hello") Hello >>> print("Hello, " + "world!") Hello, world! >>> print("Age: " + str(23)) Age: 23

По умолчанию, для разделения элементов в функции print используется пробел.

>>> print("A", "B", "C") A B C

Для замены разделителя необходимо использовать параметр sep функции print.

print("A", "B", "C", sep="#") A#B#C 

В качестве конечного элемента выводимой строки, используется символ перевода строки.

>>> for i in range(3): print("i: " + str(i)) i: 0 i: 1 i: 2

Для его замены используется параметр end.

>>> for i in range(3): print("[i: " + str(i) + "]", end=" -- ") [i: 0] -- [i: 1] -- [i: 2] -- 

Ввод данных с клавиатуры

Для считывания вводимых с клавиатуры данных используется функция input().

>>> input() test 'test' 

Для сохранения данных в переменной используется следующий синтаксис.

>>> a = input() hello >>> print(a) hello

Если считывается с клавиатуры целое число, то строку, получаемую с помощью функции input(), можно передать сразу в функцию int().

>>> val = int(input()) 123 >>> print(val) 123 >>> type(val) class 'int'> 

Для вывода строки-приглашения, используйте ее в качестве аргумента функции input().

>>> tv = int(input("input number: ")) input number: 334 >>> print(tv) 334

Преобразование строки в список осуществляется с помощью метода split(), по умолчанию, в качестве разделителя, используется пробел.

>>> l = input().split() 1 2 3 4 5 6 7 >>> print(l) ['1', '2', '3', '4', '5', '6', '7']

Разделитель можно заменить, указав его в качестве аргумента метода split().

>>> nl = input().split("-") 1-2-3-4-5-6-7 >>> print(nl) ['1', '2', '3', '4', '5', '6', '7']

Для считывания списка чисел с одновременным приведением их к типу int можно воспользоваться вот такой конструкцией.

>>> nums = map(int, input().split()) 1 2 3 4 5 6 7 >>> print(list(nums)) [1, 2, 3, 4, 5, 6, 7]

Работа с файлами

Открытие и закрытие файла

Для открытия файла используется функция open(), которая возвращает файловый объект. Наиболее часто используемый вид данной функции выглядит так open(имя_файла, режим_доступа).

Для указания режима доступа используется следующие символы:

r’ – открыть файл для чтения;

w’ – открыть файл для записи;

x’ – открыть файл с целью создания, если файл существует, то вызов функции open завершится с ошибкой;

a’ – открыть файл для записи, при этом новые данные будут добавлены в конец файла, без удаления существующих;

b’ – бинарный режим;

t’ – текстовый режим;

+’ – открывает файл для обновления.

По умолчанию файл открывается на чтение в текстовом режиме.

У файлового объекта есть следующие атрибуты.

file.closed – возвращает true если файл закрыт и false в противном случае;

file.mode – возвращает режим доступа к файлу, при этом файл должен быть открыт;

file.name – имя файла.

>>> f = open("test.txt", "r") >>> print("file.closed: " + str(f.closed)) file.closed: False >>> print("file.mode: " + f.mode) file.mode: r >>> print("file.name: " + f.name) file.name: test.txt

Для закрытия файла используется метод close().

Чтение данных из файла

Чтение данных из файла осуществляется с помощью методов read(размер) и readline().

Метод read(размер) считывает из файла определенное количество символов, переданное в качестве аргумента. Если использовать этот метод без аргументов, то будет считан весь файл.

>>> f = open("test.txt", "r") >>> f.read() '1 2 3 4 5\nWork with file\n' >>> f.close()

В качестве аргумента метода можно передать количество символом, которое нужно считать.

>>> f = open("test.txt", "r") >>> f.read(5) '1 2 3' >>> f.close()

Метод readline() позволяет считать строку из открытого файла.

>>> f = open("test.txt", "r") >>> f.readline() '1 2 3 4 5\n' >>> f.close()

Построчное считывание можно организовать с помощью оператора for.

>>> f = open("test.txt", "r") >>> for line in f: . print(line) . 1 2 3 4 5 Work with file >>> f.close()

Запись данных в файл

Для записи данных файл используется метод write(строка), при успешной записи он вернет количество записанных символов.

>>> f = open("test.txt", "a") >>> f.write("Test string") 11 >>> f.close()

Дополнительные методы для работы с файлами

Метод tell() возвращает текущую позицию “условного курсора” в файле. Например, если вы считали пять символов, то “курсор” будет установлен в позицию 5.

>>> f = open("test.txt", "r") >>> f.read(5) '1 2 3' >>> f.tell() 5 >>> f.close()

Метод seek(позиция) выставляет позицию в файле.

>>> f = open("test.txt", "r") >>> f.tell() 0 >>> f.seek(8) 8 >>> f.read(1) '5' >>> f.tell() 9 >>> f.close()

Хорошей практикой при работе с файлами является применение оператора with. При его использовании нет необходимости закрывать файл, при завершении работы с ним, эта операция будет выполнена автоматически.

>>> with open("test.txt", "r") as f: . for line in f: . print(line) . 1 2 3 4 5 Work with file Test string >>> f.closed True

P.S.

Если вам интересна тема анализа данных, то мы рекомендуем ознакомиться с библиотекой Pandas. На нашем сайте вы можете найти вводные уроки по этой теме. Все уроки по библиотеке Pandas собраны в книге “Pandas. Работа с данными”.

>>

Раздел: Python Уроки по Python Метки: Python, Уроки Python

Python. Урок 12. Ввод-вывод данных. Работа с файлами : 2 комментария

  1. Моксим23.11.2020 “Преобразование строки в список осуществляется с помощью метода split(), по умолчанию, в качестве разделителя, используется пробел.”
    Разделитель по умолчанию не пробел, а пустое пространство
  1. Алексей 01.06.2021 Ого, действительно:
    >>> “1 2 3 4 5 7”.split()
    [‘1’, ‘2’, ‘3’, ‘4’, ‘5’, ‘7’]
    И даже так:
    >>> “1 2 \n 21 12 4”.split()
    [‘1’, ‘2’, ’21’, ’12’, ‘4’]

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *