import boto
conn = boto.connect_s3('', '')
mybucket = conn.get_bucket('data_report_321')
Mogę pobrać plik z wiadra za pomocą następującego kodu.Załaduj plik za pomocą boto
for b in mybucket:
print b.name
b.get_contents_to_filename('0000_part_00', headers=None, cb=None, num_cb=10, torrent=False, version_id=None, res_download_handler=None, response_headers=None)
Ale jestem nie mogli przesyłać pliku. Wystąpił błąd: AttributeError: Obiekt 'str' nie ma atrybutu 'tell'
Funkcje send_file ani set_contents działają zgodnie z oczekiwaniami.
for b in mybucket:
b.send_file('mytest.txt', headers=None, cb=None, num_cb=10, query_args=None, chunked_transfer=False, size=None)
b.set_contents_from_file('mytest.txt', headers=None, replace=True, cb=None, num_cb=10, policy=None, md5=None, reduced_redundancy=False, query_args=None, encrypt_key=False, size=None, rewind=False)
Jak przesłać plik z bieżącego katalogu lokalnego serwera do wiadra S3 przy użyciu boto?
Aktualizacja: muszę zadeklarować klucz (filename) z przesłanego pliku najpierw przed wywołaniem funkcji set_contents_from_filename.
k = boto.s3.key.Key(mybucket)
k.key = 'uploaded_file.txt'
k.set_contents_from_filename("myteswt.txt")
Nie dostaję żadnego błędu z set_contents_from_filename, ale plik nie jest tak naprawdę załadowany do tego zasobnika. Czy czegoś brakuje? – shantanuo