#python-3.x #zipfile
#python-3.x #застежка — молния
Вопрос:
Я пытаюсь вернуться к python, и я не уверен, с чего начать, но я хочу загрузить zip-файл локально в temp, извлечь файлы, а затем перечислить файлы (которые в 99,99% случаев являются CSV-файлами). Я хочу перечислить файлы, чтобы я мог в дальнейшем обрабатывать один из файлов на основе логики с преимуществом автоматического удаления временного каталога.
Я могу сделать большую часть из вышеперечисленного на R довольно кратко, но мои требования заключаются в том, чтобы сопоставить эту идею с python, и из моих первоначальных поисковых запросов в Google решения, которые я нахожу, не кажутся простыми и не делают именно то, что я ищу.
Любая помощь была бы очень признательна.
Комментарии:
1. Вероятно, лучше всего использовать tempfile .
Ответ №1:
Мы начинаем с загрузки файла с помощью запросов
import requests
results = requests.get('<url_to_zip>')
with open('/tmp/zip_folder.zip', 'wb') as f:
f.write(results.content)
Затем мы извлекаем zip-файл в /tmp с помощью zipfile
import zipfile
file = zipfile.ZipFile('/tmp/zip_folder.zip')
file.extractall(path='/tmp')
Затем мы перечисляем файлы.
files = os.listdir('/tmp/zip_folder')
for file in files:
if 'csv' in file:
print(file)
Комментарии:
1. Это фантастика. В первом блоке я предполагаю, что так и должно быть
f.write(results.content)
. Возможно, это выходит за рамки, но в том же блоке, где внешний zip-файл записывается локально, это тоже может быть во временном файле?2. Еще раз спасибо. Последней частью был поиск файлов csv, но я смог сделать это с
import glob; files = glob.glob(path "*csv*")
помощью wherepath = "/tmp/"
.3. tempfile в python — это реальная вещь, а не идея. То, что вы сделали здесь, — это загрузка во «временный файл». Google ищет unzip в tempfile, неправильно привел меня сюда.