Python String kodlaması - dosya adı

str (dosya.key) = '1011/101011/dosya_adı'

newFileName = str(file.key)

Ama kodu çalıştırdığımda:

UnicodeEncodeError: 'ascii' codec, karakterleri pozisyonda kodlayamaz   x-y: ordinal aralıkta değil (128)

Dosya adına biraz ayrıştırma yapmalı ve sonra s3 sunucusundan indirmem gerek. Nasıl sadece 'file_name' alırım?

5
Lütfen eksiksiz ve minimal bir test durumu gönderin.
katma yazar Michael Hoffman, kaynak
Mümkün olduğunca kısa bir betik oluşturun, ancak yine de bu hatayı üretecektir. Bu komut dosyasını bu soruya ve bunun tam olarak çalıştırılmasının sonuçlarına ekleyin (sadece bir satır geriye doğru değil). Bunun için iki iyi neden vardır: (1) size yardımcı olmak için yeterli bilgi göndermenizi sağlayacaktır; ve (2) sıklıkla bu alıştırmayı yapmak, hatanın nerede olduğu konusunda size açıklık getirecektir. Buna ek olarak, bu soruya bir amazon-s3 etiketiniz var, ancak yazılı olarak, Amazon S3 ile ilgisi yok gibi görünüyor. Bu kafa karıştırıyor.
katma yazar Michael Hoffman, kaynak
ne demek istiyorsun?
katma yazar Ron D., kaynak
Cevapsız bilgi için üzgünüm. ama @Koert sorumu yanıtladı. Sorun şu ki python 2.7'den python 2.5.2 ile linux server'a kod aktarmaya çalıştım ve fark var. NewFileName içindeki terimler için lokasyo istedim. file.key bir s3 anahtar (bir kovadan). Ama dediğim gibi, Koert benim problemimi çözdü. Yardım için teşekkürler!
katma yazar Ron D., kaynak
Hangi file.key'in gerçekte ne olduğunu görmeyi çok isteriz (tür, nasıl olunur). Ayrıca, önerilen bir alternatif için çok alakalı olabilecek newFileName ile ne yapmak istediğinizi bize söylemezsiniz. Mümkünse, sorunun yanıtlanması ve araştırılması için bir cevap verenin çalışabileceği bir şey verin.
katma yazar Ondergetekende, kaynak
Ne diyor: Sorunu gösteren en az miktarda kod gönderin.
katma yazar kindall, kaynak

1 cevap

İyi bir yanıt vermek için çok az içerik yayınladınız, ancak yine de deneyeceğim.

Oluşturmaya çalıştığınız dosya adı, ascii olmayan karakterler içerdiğinden, otomatik olarak python 2.x'te standart bir str'e dönüştürülemez.

str öğesini unicode ile değiştirirseniz, tümüyle dönüştürme gereksinimini ortadan kaldırabilirsiniz. Kodunuzun başka bir kısmı bir str kullanmanız gerekiyorsa, bunu şöyle kodlayabilirsiniz: newFileName = unicode (file.key) .encode ('ascii', 'ignore') . Örneğimde dönüştürülemeyen karakterlerin atlanacağını unutmayın.

2
katma