我的 S3 中有兩個檔案,我需要從 AWS 之外的 Python 代碼中讀取它們。為此,我正在為每個人生成預先簽名的 url 以便能夠閱讀它們。使用 tx 格式讀取檔案的代碼的第一部分作業正常:
response = client.generate_presigned_url('get_object',
Params={'Bucket': ...,
'Key': 'file.csv'},
ExpiresIn=3600)
df = pd.read_csv(response)
但是,對于具有 PRF 格式的第二個檔案,我遇到了錯誤:
response = client.generate_presigned_url('get_object',
Params={'Bucket': ...,
'Key': 'finlename.RRF'},
ExpiresIn=3600)
with open(response , encoding="utf8") as fp:
for cnt, line in enumerate(fp):
line=line.strip()
這是錯誤:
---> 28 with open(file_name, encoding="utf8") as fp:
29 for cnt, line in enumerate(fp):
30 line=line.strip()
OSError: [Errno 22] Invalid argument: 'https://....'
我想知道它是否與檔案格式有關,因為我可以讀取任何 cv 或文本檔案,而 pandas read_csv 沒有任何問題,但是對于任何其他格式,在使用 open 時我遇到了同樣的錯誤。
uj5u.com熱心網友回復:
檔案格式確實有所不同,但只是間接的。閱讀pandas.read_csv的檔案:
任何有效的字串路徑都是可以接受的。該字串可以是一個 URL。有效的 URL 方案包括 http、ftp、s3、gs 和 file。
您將 HTTPS URL 傳遞給 read_csv 并且該方法能夠處理它。
然而,python 的 open 方法需要一個檔案物件并且不能處理 URL。您需要使用 HTTP 客戶端庫來下載檔案,然后對其進行處理。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/386938.html
上一篇:SwiftUITabview修復
下一篇:S3視頻存盤和流媒體有什么區別?
