Итак, я создал HTML-форму, с помощью которой я могу отправлять файлы CSV, которые затем обрабатываются сценарием Python.
Кроме того, я, скорее всего, буду динамически создавать имена файлов каждого CSV-файла в следующем формате: YYYY-MM-DD HH.MM.SS.csv.
Есть ли способ получить имя отправленного файла CSV, чтобы я мог открыть файл способом, изображенным ниже?
with open('????-??-?? ??.??.??.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['first_name'], row['last_name'])
Ниже показано, как выглядит форма, и я знаю, что могу передать имя файла с помощью get, но должен быть способ сделать это с помощью post ...
<!DOCTYPE html>
<html>
<head>
<title></title>
</head>
<body>
<form action = "process-excel.py" method = "post" enctype = "multipart/form-data">
<input type = "file" name = "myFile">
</form>
</body>
</html>
process-excel.py
Имейте в виду, что приведенный ниже сценарий - это всего лишь старый шаблон, который я сохранил для использования PyMySQL для вставки данных в базу данных.
# -*- coding: utf-8 -*-
import pymysql.cursors
import csv
""" HOW DO I RETRIEVE THE FILENAME OF A FILE THAT IS SUBMITTED
''' FROM <input type = "file" name = "myFile"> IN THE FORM ABOVE?
"""
with open('names.csv', newline='') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
print(row['first_name'], row['last_name'])
con = pymysql.Connect(host='localhost',
user='',
password='',
db='',
charset='utf8mb4',
cursorclass=pymysql.cursors.DictCursor)
try:
with con.cursor() as cursor:
sql = "INSERT INTO `test` (`title`, `description`, `category`) VALUES (%s, %s, %s)"
cursor.execute(sql, ('a', 'b', 'c'))
con.commit()
except Exception:
raise Exception('INSERT FAILED..................................')
@PatrickRoberts У меня еще нет сценария. Я совершенно новичок во всем этом. впервые использую CSV и в целом новичок в Python.
Значит process-excel.py не существует?
@PatrickRoberts, это в основном чистый лист. ive добавил один из моих старых шаблонов, который, вероятно, будет использоваться в качестве основы
Где твой сервер? Это не серверный код, а просто клиент базы данных.
@PatrickRoberts ... он будет работать на сервере, за который я плачу. эти вопросы ни к чему не приводят?
Скорее всего, вы имеете в виду службу удаленного хостинга, а не сервер. Ты записывать сервер. Если бы вы этого не сделали, вы бы не писали код для открытия загруженного файла CSV. Взгляните на базовый пример с использованием Flask: stackoverflow.com/questions/40414526/…
@PatrickRoberts чувак, все, что мне нужно знать, это как получить имя файла, который был отправлен через форму, чтобы я мог вставить его в свою базу данных ???
Вы спрашиваете то, что даже не имеет смысла. Вы не можете открыть файл, если у вас нет кода для его загрузки, а код для его загрузки - это то место, где вы можете получить доступ к имени файла.
@PatrickRoberts, чувак, ты не видишь HTML-форму? вот что используется для отправки / загрузки файла на сервер ...
Из этого разговора очень ясно, что вы не знаете, что такое сервер. Попробуйте отправить форму. Посмотри, что получится. Если нет сервера для обработки загрузки, не появится ничего, кроме страницы с ошибкой. После того, как вы закончите с этим осознанием, ознакомьтесь с некоторыми популярными серверными фреймворками для Python, такими как Django или Flask, чтобы вы могли обработать загрузку и получить имя файла.
@PatrickRoberts, ты не понимаешь. когда я отправляю форму, я попадаю на пустую страницу, потому что мой скрипт process-excel.py пуст, так как я до сих пор ничего с ним не делал. все, что я пытаюсь сделать, это выяснить, как получить имя файла CSV, отправленного через HTML-форму в файле python ... вы пытаетесь сказать, что я не могу передать файл из HTML-формы в скрипт python обрабатываться скриптом python ??
Вы явно не понимаете. HTML-формы не просто выполняют случайные файлы Python на удаленном хосте. Вы должны написать сервер, который принимает HTTP-запросы и создает HTTP-ответы. Пожалуйста, посмотрите любую из двух ссылок, которые я предоставил, и напишите сервер, который обрабатывает POST-запрос по пути /process-excel.py. Оттуда вы можете получить объект запроса из серверной инфраструктуры, которую вы в конечном итоге используете, и получить доступ к имени и данным загруженного файла.
чувак, почему с питоном все так сложно? возможно, я просто использую PHP для обработки файла. Я подумал, поскольку я могу передавать файлы в файлы PHP, я должен иметь возможность передавать их в файлы Python, но я думаю, что нет. что именно вы имеете в виду, говоря, что мне придется писать "сервер" ??? Могу ли я не просто отправить файл в файл PHP, который запускает скрипт Python для обработки файла?
Скрипты PHP выполняются серверной структурой под названием Apache, а не случайными клиентами, загружающими формы. Вы запускаете сервер Apache и настраиваете его для прослушивания определенного TCP-порта на хосте, через который клиенты могут делать запросы к серверу, которые обрабатываются сценариями PHP. В других языках, таких как Node.js или Python, вам необходимо установить сервер и настроить его, как и в случае с Apache.
да, на моем сервере запущен apache, который выполняет скрипт php. Я имел в виду значение атрибута action HTML-формы ... опять же, я приобрел хостинг через стороннюю организацию, поэтому у меня нет корневого доступа и ограниченного контроля над сервером, но я, очевидно, все еще могу выполнять python и php скрипты.
Если вы используете Apache, тогда лучше продолжить писать на PHP. В противном случае я бы связался со службой хостинга и спросил их, какие у вас есть варианты запуска сервера Django или Flask, если вы действительно хотите использовать Python, а не PHP.
@PatrickRoberts, у меня действительно нет проблем против их использования. в любом случае, единственная причина, по которой я вообще использую python, заключается в том, что я очищаю данные из Интернета и вставляю их в файл Excel, который я планировал вручную отправить на свой веб-сайт через HTML-форму, чтобы избежать кучи хлопот / посторонних затрат, таких как восстановление и запуск моего собственного сервера, очистка данных с него, а затем покупка нового подключения к Интернету, чтобы получить выделенный IP-адрес, чтобы я мог разместить его сам.





Где код, обрабатывающий загрузку? Вы должны иметь возможность получить имя файла в результате анализа составных данных формы во время процесса загрузки.