J'utilise python 3.1, sur une machine Windows 7. Le russe est la langue système par défaut, et utf-8 est l'encodage par défaut.
En regardant la réponse à une [question précédente][1], j'ai essayé d'utiliser le module "codecs" ; pour me donner un peu de chance. Voici quelques exemples :
>>> g = codecs.open("C:\Users\Eric\Desktop\beeline.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#39>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#40>, line 1)
>>> g = codecs.open("C:\Python31\Notes.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 11-12: malformed \N character escape (<pyshell#41>, line 1)
>>> g = codecs.open("C:\Users\Eric\Desktop\Site.txt", "r", encoding="utf-8")
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 2-4: truncated \UXXXXXXXX escape (<pyshell#44>, line 1)
Ma dernière idée était, je pensais que cela pouvait être le fait que windows "traduit" ; quelques dossiers, comme le dossier "users" ;, en russe (bien que taper "users" ; est toujours le chemin correct), donc j'ai essayé dans le dossier Python31. Toujours pas de chance. Avez-vous des idées ?
[1] : https://stackoverflow.com/questions/778096/problem-opening-a-text-document-unicode-error
Le problème vient de la chaîne de caractères
"C:\Users\Eric\Desktop\beeline.txt"
Ici, U` dans `"C:\Users`... commence un échappement Unicode de huit caractères, tel que
U00014321``. Dans votre code, l'échappement est suivi du caractère 's' ;, qui n'est pas valide.
Vous devez soit dupliquer tous les antislashs :
"C:\\Users\\Eric\\Desktop\\beeline.txt"
Soit préfixer la chaîne avec r
(pour produire une chaîne brute) :
r"C:\Users\Eric\Desktop\beeline.txt"
J'ai eu cette même erreur dans python 3.2.
J'ai un script pour l'envoi d'email et :
csv.reader(open('work_dir\uslugi1.csv', newline='', encoding='utf-8'))
lorsque je supprime le premier caractère du fichier uslugi1.csv
, cela fonctionne bien.
En vous référant au document openpyxl, vous pouvez faire les changements suivants.
from openpyxl import Workbook
from openpyxl.drawing.image import Image
wb = Workbook()
ws = wb.active
ws['A1'] = 'Insert a xxx.PNG'
# Reload an image
img = Image(**r**'x:\xxx\xxx\xxx.png')
# Insert to worksheet and anchor next to cells
ws.add_image(img, 'A2')
wb.save(**r**'x:\xxx\xxx.xlsx')