Как открыть файл CSV, не зная имени файла

Итак, я создал 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..................................')

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

Patrick Roberts 17.09.2018 04:02

@PatrickRoberts У меня еще нет сценария. Я совершенно новичок во всем этом. впервые использую CSV и в целом новичок в Python.

oldboy 17.09.2018 04:03

Значит process-excel.py не существует?

Patrick Roberts 17.09.2018 04:04

@PatrickRoberts, это в основном чистый лист. ive добавил один из моих старых шаблонов, который, вероятно, будет использоваться в качестве основы

oldboy 17.09.2018 04:05

Где твой сервер? Это не серверный код, а просто клиент базы данных.

Patrick Roberts 17.09.2018 04:06

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

oldboy 17.09.2018 04:07

Скорее всего, вы имеете в виду службу удаленного хостинга, а не сервер. Ты записывать сервер. Если бы вы этого не сделали, вы бы не писали код для открытия загруженного файла CSV. Взгляните на базовый пример с использованием Flask: stackoverflow.com/questions/40414526/…

Patrick Roberts 17.09.2018 04:13

@PatrickRoberts чувак, все, что мне нужно знать, это как получить имя файла, который был отправлен через форму, чтобы я мог вставить его в свою базу данных ???

oldboy 17.09.2018 04:15

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

Patrick Roberts 17.09.2018 04:17

@PatrickRoberts, чувак, ты не видишь HTML-форму? вот что используется для отправки / загрузки файла на сервер ...

oldboy 17.09.2018 04:18

Из этого разговора очень ясно, что вы не знаете, что такое сервер. Попробуйте отправить форму. Посмотри, что получится. Если нет сервера для обработки загрузки, не появится ничего, кроме страницы с ошибкой. После того, как вы закончите с этим осознанием, ознакомьтесь с некоторыми популярными серверными фреймворками для Python, такими как Django или Flask, чтобы вы могли обработать загрузку и получить имя файла.

Patrick Roberts 17.09.2018 04:21

@PatrickRoberts, ты не понимаешь. когда я отправляю форму, я попадаю на пустую страницу, потому что мой скрипт process-excel.py пуст, так как я до сих пор ничего с ним не делал. все, что я пытаюсь сделать, это выяснить, как получить имя файла CSV, отправленного через HTML-форму в файле python ... вы пытаетесь сказать, что я не могу передать файл из HTML-формы в скрипт python обрабатываться скриптом python ??

oldboy 17.09.2018 04:25

Вы явно не понимаете. HTML-формы не просто выполняют случайные файлы Python на удаленном хосте. Вы должны написать сервер, который принимает HTTP-запросы и создает HTTP-ответы. Пожалуйста, посмотрите любую из двух ссылок, которые я предоставил, и напишите сервер, который обрабатывает POST-запрос по пути /process-excel.py. Оттуда вы можете получить объект запроса из серверной инфраструктуры, которую вы в конечном итоге используете, и получить доступ к имени и данным загруженного файла.

Patrick Roberts 17.09.2018 04:29

чувак, почему с питоном все так сложно? возможно, я просто использую PHP для обработки файла. Я подумал, поскольку я могу передавать файлы в файлы PHP, я должен иметь возможность передавать их в файлы Python, но я думаю, что нет. что именно вы имеете в виду, говоря, что мне придется писать "сервер" ??? Могу ли я не просто отправить файл в файл PHP, который запускает скрипт Python для обработки файла?

oldboy 17.09.2018 04:32

Скрипты PHP выполняются серверной структурой под названием Apache, а не случайными клиентами, загружающими формы. Вы запускаете сервер Apache и настраиваете его для прослушивания определенного TCP-порта на хосте, через который клиенты могут делать запросы к серверу, которые обрабатываются сценариями PHP. В других языках, таких как Node.js или Python, вам необходимо установить сервер и настроить его, как и в случае с Apache.

Patrick Roberts 17.09.2018 04:35

да, на моем сервере запущен apache, который выполняет скрипт php. Я имел в виду значение атрибута action HTML-формы ... опять же, я приобрел хостинг через стороннюю организацию, поэтому у меня нет корневого доступа и ограниченного контроля над сервером, но я, очевидно, все еще могу выполнять python и php скрипты.

oldboy 17.09.2018 04:38

Если вы используете Apache, тогда лучше продолжить писать на PHP. В противном случае я бы связался со службой хостинга и спросил их, какие у вас есть варианты запуска сервера Django или Flask, если вы действительно хотите использовать Python, а не PHP.

Patrick Roberts 17.09.2018 04:40

@PatrickRoberts, у меня действительно нет проблем против их использования. в любом случае, единственная причина, по которой я вообще использую python, заключается в том, что я очищаю данные из Интернета и вставляю их в файл Excel, который я планировал вручную отправить на свой веб-сайт через HTML-форму, чтобы избежать кучи хлопот / посторонних затрат, таких как восстановление и запуск моего собственного сервера, очистка данных с него, а затем покупка нового подключения к Интернету, чтобы получить выделенный IP-адрес, чтобы я мог разместить его сам.

oldboy 17.09.2018 04:45
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
18
544
0

Другие вопросы по теме