Я только что преобразовал действие, которое я совершил с JS (узел), в Python (flask веб-сервер) - подключение к защищенной службе FTP, чтение и анализ оттуда CSV-файлов, потому что я знаю, что это быстрее с Python. Мне удалось сделать почти все, но я испытываю определенные трудности с хорошим анализом файла CSV.
Так вот мой код:
import urllib.request
import csv
import json
import pysftp
import pandas as pd
cnopts = pysftp.CnOpts()
cnopts.hostkeys = None
name = 'username'
password = 'pass'
host = 'hostURL'
path = ""
with pysftp.Connection(host=host, username=name, password=password, cnopts=cnopts) as sftp:
for filename in sftp.listdir():
if filename.endswith('.csv'):
file = sftp.open(filename)
csvFile = file.read()
Я попал в ту часть, где я могу видеть содержимое файла CSV, но я не могу хорошо разобрать (как мне нужно, чтобы он был отформатирован - массив объектов).
Я попытался проанализировать его с помощью:
with open (csvFile, 'rb') as csv_file:
print(csv_file)
cr = csv.reader(csv_file,delimiter=",") # , is default
rows = list(cr)
и с этим:
Past=pd.read_csv(csvFile,encoding='cp1252')
print(Past)
но у меня есть такие ошибки, как:
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 748: invalid start byte
и
OSError: Expected file path name or file-like object, got <class 'bytes'> type
Я действительно немного застрял прямо сейчас. (Еще один вопрос - не важно, но я просто хотел узнать, могу ли я получить файл из ftp на основе самой последней даты - потому что иногда в хранилище может быть более 1 файла.)