簡體   English   中英

使用 boto3 將文件上傳到 S3

[英]Use boto3 to upload a file to S3

我有一個腳本可以將容器中的 csv 文件上傳到 S3 存儲桶,我將文件復制到本地計算機,並在本地測試腳本,但出現錯誤。 我還在學習一切,試圖知道我在腳本中缺少什么部分,以及如何讓它運行並將文件上傳到 S3,

這是錯誤:

錯誤_1:

Traceback (most recent call last):
  File "C:/Users/U12345/IdeaProjects/xxx/s3_upload.py", line 19, in <module>
    r'C:\Users\U12345\IdeaProjects\xxx\test_' + str(current_date) + '.csv')
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: 'C:\\Users\\U12345\\IdeaProjects\\xxx\\test.csv' -> 'C:\\Users\\U12345\\IdeaProjects\\xxx\\test_2020-04-16 10:55:41.csv'

錯誤_02:

File "C:/Users/U12345/IdeaProjects/xxx/s3_upload.py", line 33
    response = s3_client.put_object(Body='C:\Users\U12345/IdeaProjects/xxx/test.csv',
                                        ^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-3: truncated \UXXXXXXXX escape

另一個問題是我不太確定如何調用這個 function,在括號中放入什么參數,它給了我不同的錯誤。

我已經為此苦苦掙扎了將近一個星期,有點沮喪,有人可以給我一些幫助或一個我可以效仿的好例子。

更新:

error02 和最后一個問題已經解決,這只是第一個錯誤仍然無法正常工作,我正在嘗試'/','',有'C:',沒有'C:',都不起作用......

我猜你使用 put_object() 的方式是錯誤的。 它用於在 s3 上保存“對象”而不是文件,即您需要首先使用 pandas.read_csv() 或其他內容讀取文件內容,然后用讀取時獲得的 object 替換“正文”部分。類似於這個

  df= pandas.read_csv('C:\Users\U12345/IdeaProjects/xxx/test.csv')
  response = s3_client.put_object(Body=df,  
                                    Bucket=output_bucket,
                                    Key='test.csv',
                                    ACL="bucket-owner-full-control")

如果你想直接上傳文件,你應該使用

  s3 = boto3.resource('s3')
  s3.meta.client.upload_file('C:\Users\U12345/IdeaProjects/xxx/test.csv', output_bucket, 'test.csv')

你有一些事情要在這里解決,所以讓我們稍微分解一下。

1) 當您調用upload_to_s3()時,您需要使用已聲明的 function 參數、文件名和存儲桶密鑰來調用它。 所以它會是upload_to_s3(filename, bucket_key)例如。

2)自從我使用 Windows 和 Python 以來已經有一段時間了,但問問自己它是否在文件路徑中使用\而不是/ ,還要確保文件絕對位於您期望的位置。

3) 對於 S3 上傳Body:是您要上傳的實際數據,而不是數據的文件名。 您已在open(...) as file其稱為文件,因此您現在有一個 object 稱為file來表示它。

在最后一行

upload_to_s3()

你實際上沒有給 function 任何參數。 在括號內放入參數:

(source_filename: str, key: str)

即給 function 它的文件名和存儲桶

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM