Non toujours pas, j'ai la même erreur qui apparait.
-----
Non toujours pas, j'ai la même erreur qui apparait.
Ca sent un portage pourri dans le compilateur de la fonction de renomination sous Windows (en effet, nativement les caractère accentués, tout comme les espaces sont parfaitement supportés, du moins sur les disques formatés en NTFS).
Essaie de remplacer le os.rename par un appel direct à la fonction de l'API Win32 ReplaceFile (cf. ici : https://msdn.microsoft.com/en-us/lib...v=vs.85).aspx) si toutefois Python supporte l'appel de fonctions externes.
C'est bien du Python pas du Python.NET ? (dans ce dernier cas, ce serait beaucoup plus simple).
Oui c'est bien du Python.
Le lien ne fonctionne pas, et comme je ne suis pas un habitué de ces manips là...
En effet; c'est la présence d'un groupe entre parenthèses dans un élément de l'URL qui apparemment est mal traité par le moteur du forum.
Celui là doit s'afficher correctement : https://msdn.microsoft.com/en-us/lib.../aa365512.aspx
Heu... J'ai pas compris grand chose à ce qu'il y a dans le lien en fait ^^
C'est une fonction du système permettant de renommer un fichier; et si cela fonctionne avec cette fonction, cela veut dire que c'est l'implémentation de l'os.rename dans le compilo qui est pourrie; dans le cas contraire ton problème vient d'ailleurs.
C'est ce à quoi faisait référence, à juste titre, Ludwig1 (aka ForthMan) plus haut, mais avec son style habituel, c'est à dire embrouillé.
En revanche, je n'ai pas la moindre idée de comment l'appeler depuis Python (je n'ai jamais écrit une ligne de Python de ma vie et n'ai pas vraiment de raison de commencer )
Ha oui, donc en fait j'avais à peu près compris mais l'essentiel c'était de savoir comment l'appeler avec Python
En soit je peux essayer de l'appeler avec un interpréteur C/C++, et si ça marche, alors on pourra faire le même constat, non ?
Et au passage, j'aurais ce que je veux. J'essayerai ça !
Bonjour,
Normalement os.rename() doit marcher, ce n'est certainement pas cela le problème. Avant d'exécuter le rename, imprime simplement les noms des fichiers que tu veux renommer et tu verras (probablement) que l'erreur subsiste et provient de la façon dont tu construis les noms des fichiers.
Salut,
Merci pour l'embrouillé, mais sache que ma langue maternelle c'est l'Allemand. Essaye donc d'écrire de l'Allemand embrouillé comme moi j'écris du Français embrouillé.
Ceci étant , je conseillerais plutôt d'utiliser, si c'est possible, la fonction Movefile du Kernel32.dll
J'ai décompilé la fonction RENAME-FILE de mon système pour voir, c'est bien la fonction Movefile qui est utilisée.
Il me semble qu'il faudrait afficher à l'écran les chemins/noms des fichiers sourcesCode:see rename-file 4079CF 40376F ( R-BUF ) CALL E89BBDFFFF 4079D4 4 # EBP SUB 83ED04 4079D7 EBX 0 [EBP] MOV 895D00 4079DA 0 [ESP] EBX MOV 8B1C24 4079DD 404F1F ( ZPLACE ) CALL E83DD5FFFF 4079E2 4 # EBP SUB 83ED04 4079E5 EBX 0 [EBP] MOV 895D00 4079E8 EBX POP 5B 4079E9 EBX ECX MOV 8BCB 4079EB 4 [EBP] EAX MOV 8B4504 4079EE 0 [EBP] EBX MOV 8B5D00 4079F1 EAX 0 [EBP] MOV 894500 4079F4 ECX 4 [EBP] MOV 894D04 4079F7 40376F ( R-BUF ) CALL E873BDFFFF 4079FC 4 # EBP SUB 83ED04 4079FF EBX 0 [EBP] MOV 895D00 407A02 0 [ESP] EBX MOV 8B1C24 407A05 404F1F ( ZPLACE ) CALL E815D5FFFF 407A0A 4 # EBP SUB 83ED04 407A0D EBX 0 [EBP] MOV 895D00 407A10 EBX POP 5B 407A11 0 [EBP] EAX MOV 8B4500 407A14 EBX 0 [EBP] MOV 895D00 407A17 EAX EBX MOV 8BD8 407A19 40655F ( MoveFile ) CALL E841EBFFFF 407A1E EBX NEG F7DB 407A20 EBX EBX SBC 19DB 407A22 EBX NOT F7D3 407A24 4 # EBP SUB 83ED04 407A27 EBX 0 [EBP] MOV 895D00 407A2A -C0 # EBX MOV BB40FFFFFF 407A2F 0 [EBP] EBX AND 235D00 407A32 4 # EBP ADD 83C504 407A35 RET C3
puis leurs nouveaux noms pour voir ce que Python boutique.
Il va de soit que les fichiers sources doivent exister avant de lancer le " RenameFile"
En général il est souhaitable de sécuriser en faisant un test si le fichier source existe.
On peut par exemple construire la fonction " RenameFile" à l'aide de l'algorithme suivant:
( Path/Name.Ext )FileExist?
Si Oui " RenameFile"
Si non " ErrorMessage"
Cordialement
Ludwig
Bonjour à tous !
J'ai finalement réussi à m'en sortir avec Python. J'utilisais l’interpréteur IPython jusqu'à maintenant et j'ai essayé avec la console. Je ne sais pas pourquoi, mais ça fonctionne avec la console. Donc finalement tout va bien !
Merci à tous pour votre aide.
Remarque doublement ridicule :
- "embrouillé" ne s'appliquait pas à la forme de ton intervention mais à son contenu (visiblement méconnaissance des notions de base de design d'un compilateur).
- je n'interviens pas sur des forums germanophones, donc je ne vois pas ce que ma supposée méconnaissance de l'allemand vient faire ici.
Salut,
Excuse moi d'être ignorant, mais voila je dois vivre avec. D'ailleurs ça me rappelle
le titre de la leçon terminale de mon prédécesseur " Ignorance lourd fardeaux".
Desquels designs de compilateurs tu parles? ils sont pas tous pareil.
Moi j'utilise un compilateur distribué qui switch ON ou OFF selon la configuration dynamique de la machine virtuelle.
D'ailleurs, quand le compilateur switch ON l'interpréteur switch OFF et inversement.
C'est de ça que tu veux parler?
Ou bien veux-tu parler d'un compilateur C ou C++ classique?
Comme ici c'est hors sujet je te propose d'ouvrir un fil sur le sujet,
Titre " Etude comparative des compilateurs".
Cordialement
Ludwig