Файл CSV от S3 возвращает 0 строк при загрузке с помощью Pandas, несмотря на ручную загрузкуPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Файл CSV от S3 возвращает 0 строк при загрузке с помощью Pandas, несмотря на ручную загрузку

Сообщение Anonymous »

Я сталкиваюсь с проблемой при загрузке файла CSV из S3, обработке его и читая его в DataFrame Pandas. Вот ситуация: < /p>

Я загружаю файл из ковша S3 в качестве байтового потока, сохраняя его
локально, а затем читая его с Pandas. < /li>
Правильно загружается и сохраняет файл (насколько я могу судить): < /li>
Размер файла соответствует тому, что сообщается в S3. Файл сохраняется локально без ошибок. br /> Что я пробовал: < /strong> < /p>

вручную загружать и читать Файл: он работает отлично, когда я вручную загружаю файл с S3 с помощью консоли AWS и загружаю его в панды. У него даже было более миллиона рядов. Обычно он обнаруживает UTF-8, ASCII или аналогичное кодирование для байтового потока. Я также пытался вручную установить кодирование, но это тоже не сработало. В байтах от S3 в локальную память я подумал, что, возможно, что -то не так со строительством файла с использованием байтов, поэтому в качестве механизма резерва я добавил чек, который загрузил бы весь файл из S3, если подсчет строки для файла равно 0 (с подходом байта), но это было безрезультатно. Содержание файла они появляются как двоичные нули (\ x00), что кажется неправильным. ПРИМЕЧАНИЕ. При загрузке вручную и открыты с использованием Pandas. p>

Загруженный вручную файл отлично работает с пандами, поэтому файл в S3 не поврежден. < /li>
Моя текущая реализация включает загрузку файла в кусочках, реконструкцию его из потока, а затем сохранение его локально. не загружает строки в панд. Py PrettyPrint-Override ">

Код: Выделить всё

    s3 = boto3.client('s3', region_name='', aws_access_key_id='', aws_secret_access_key='')

S3_BUCKET_NAME = ""
S3_FILE_KEY = ""

def download_and_read_file(s3_bucket, s3_key):
try:

print(f"Downloading file: {s3_key}")
response = s3.get_object(Bucket=s3_bucket, Key=s3_key)
file_content = response['Body'].read()

local_filename = "downloaded_file.csv"
with open(local_filename, "wb") as f:
f.write(file_content)
print(f"File saved locally as {local_filename}")

# loading the file into pandas
df = pd.read_csv(local_filename, low_memory=False)
print(f"Total rows in DataFrame: {df.shape[0]}")
print(df.head())

except Exception as e:
print(f"Error: {e}")

# calling the function
download_and_read_file(S3_BUCKET_NAME, S3_FILE_KEY)
Абсолютно будет оценено.

Подробнее здесь: https://stackoverflow.com/questions/793 ... l-download
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»