Bonjour,
Ayant récupéré une archive faite avec un outil sans doute peu
recommandable, je me retrouve avec un dossier où les noms commencent
tous par "rep\"
Voulant renommer ces fichiers j'utilise os.rename (python 3) :
###
import os
for nom in os.listdir(".") :
print(nom," --> ",nom[4:])
os.rename(nom,nom[4:])
###
Je reçois en réponse
>>>
OSError: [Errno 2] No such file or directory
>>>
rename n'aime pas les "\" dans les noms de fichier.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Nicolas
Le 13/11/2012 18:19, François Couloigner a écrit :
Bonjour, Ayant récupéré une archive faite avec un outil sans doute peu recommandable, je me retrouve avec un dossier où les noms commencent tous par "rep" Voulant renommer ces fichiers j'utilise os.rename (python 3) : ### import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:]) ### Je reçois en réponse >>> OSError: [Errno 2] No such file or directory >>> rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Est-ce que remplacer les par des / suffit ? nom.replace("", "/")
Nicolas
Le 13/11/2012 18:19, François Couloigner a écrit :
Bonjour,
Ayant récupéré une archive faite avec un outil sans doute peu
recommandable, je me retrouve avec un dossier où les noms commencent
tous par "rep"
Voulant renommer ces fichiers j'utilise os.rename (python 3) :
###
import os
for nom in os.listdir(".") :
print(nom," --> ",nom[4:])
os.rename(nom,nom[4:])
###
Je reçois en réponse
>>>
OSError: [Errno 2] No such file or directory
>>>
rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Est-ce que remplacer les par des / suffit ?
nom.replace("\", "/")
Le 13/11/2012 18:19, François Couloigner a écrit :
Bonjour, Ayant récupéré une archive faite avec un outil sans doute peu recommandable, je me retrouve avec un dossier où les noms commencent tous par "rep" Voulant renommer ces fichiers j'utilise os.rename (python 3) : ### import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:]) ### Je reçois en réponse >>> OSError: [Errno 2] No such file or directory >>> rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Est-ce que remplacer les par des / suffit ? nom.replace("", "/")
Nicolas
François Couloigner
Le 14/11/2012 08:47, Nicolas a écrit :
Le 13/11/2012 18:19, François Couloigner a écrit :
Bonjour, Ayant récupéré une archive faite avec un outil sans doute peu recommandable, je me retrouve avec un dossier où les noms commencent tous par "rep" Voulant renommer ces fichiers j'utilise os.rename (python 3) : ### import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:]) ### Je reçois en réponse >>> OSError: [Errno 2] No such file or directory >>> rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Est-ce que remplacer les par des / suffit ? nom.replace("", "/")
Nicolas
arrh désolé, c'était un pb de répertoire : je lisais la liste des fichiers d'un sous-repertoire et appliquais rename dans le répertoire courant. François
Le 14/11/2012 08:47, Nicolas a écrit :
Le 13/11/2012 18:19, François Couloigner a écrit :
Bonjour,
Ayant récupéré une archive faite avec un outil sans doute peu
recommandable, je me retrouve avec un dossier où les noms commencent
tous par "rep"
Voulant renommer ces fichiers j'utilise os.rename (python 3) :
###
import os
for nom in os.listdir(".") :
print(nom," --> ",nom[4:])
os.rename(nom,nom[4:])
###
Je reçois en réponse
>>>
OSError: [Errno 2] No such file or directory
>>>
rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Est-ce que remplacer les par des / suffit ?
nom.replace("\", "/")
Nicolas
arrh désolé, c'était un pb de répertoire : je lisais la liste des
fichiers d'un sous-repertoire et appliquais rename dans le répertoire
courant.
François
Le 13/11/2012 18:19, François Couloigner a écrit :
Bonjour, Ayant récupéré une archive faite avec un outil sans doute peu recommandable, je me retrouve avec un dossier où les noms commencent tous par "rep" Voulant renommer ces fichiers j'utilise os.rename (python 3) : ### import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:]) ### Je reçois en réponse >>> OSError: [Errno 2] No such file or directory >>> rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Est-ce que remplacer les par des / suffit ? nom.replace("", "/")
Nicolas
arrh désolé, c'était un pb de répertoire : je lisais la liste des fichiers d'un sous-repertoire et appliquais rename dans le répertoire courant. François
PiLS
François Couloigner à ploppé:
Bonjour, Ayant récupéré une archive faite avec un outil sans doute peu recommandable, je me retrouve avec un dossier où les noms commencent tous par "rep" Voulant renommer ces fichiers j'utilise os.rename (python 3) : ### import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:]) ### Je reçois en réponse >>> OSError: [Errno 2] No such file or directory >>> rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule solution: le taper explicitement. Par exemple
for nom in listdir("."): nomcourt=nom[4:] os.rename("rep"+nomcourt, nomcourt)
ou bien
for nom in listdir("."): nomcourt=nom[4:] os.rename(r"rep"+nomcourt, nomcourt)
(note: pas testé, mais les deux devraient marcher)
-- PiLS
François Couloigner <couloif@free.fr> à ploppé:
Bonjour,
Ayant récupéré une archive faite avec un outil sans doute peu
recommandable, je me retrouve avec un dossier où les noms commencent
tous par "rep"
Voulant renommer ces fichiers j'utilise os.rename (python 3) :
###
import os
for nom in os.listdir(".") :
print(nom," --> ",nom[4:])
os.rename(nom,nom[4:])
###
Je reçois en réponse
>>>
OSError: [Errno 2] No such file or directory
>>>
rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule
solution: le taper explicitement.
Par exemple
for nom in listdir("."):
nomcourt=nom[4:]
os.rename("rep\"+nomcourt, nomcourt)
ou bien
for nom in listdir("."):
nomcourt=nom[4:]
os.rename(r"rep"+nomcourt, nomcourt)
(note: pas testé, mais les deux devraient marcher)
Bonjour, Ayant récupéré une archive faite avec un outil sans doute peu recommandable, je me retrouve avec un dossier où les noms commencent tous par "rep" Voulant renommer ces fichiers j'utilise os.rename (python 3) : ### import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:]) ### Je reçois en réponse >>> OSError: [Errno 2] No such file or directory >>> rename n'aime pas les "" dans les noms de fichier.
Une suggestion ?
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule solution: le taper explicitement. Par exemple
for nom in listdir("."): nomcourt=nom[4:] os.rename("rep"+nomcourt, nomcourt)
ou bien
for nom in listdir("."): nomcourt=nom[4:] os.rename(r"rep"+nomcourt, nomcourt)
(note: pas testé, mais les deux devraient marcher)
-- PiLS
Eric Masson
PiLS writes:
'Lut,
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule solution: le taper explicitement.
-- Je propose que chacun de nous expose le problème (et dénoncent les fufeurs, cf liste des votants, ceux qui ont voté NNO sont les fufeurs) à son FAI. -+- Rocou In GNU - Comment tu écris Kommandantur ? -+-
PiLS <pils@invalid.ca> writes:
'Lut,
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule
solution: le taper explicitement.
Il est préférable d'utiliser os.sep :
http://docs.python.org/2/library/os.html?highlight=os.sep#os.sep
--
Je propose que chacun de nous expose le problème (et dénoncent les
fufeurs, cf liste des votants, ceux qui ont voté NNO sont les fufeurs)
à son FAI.
-+- Rocou In GNU - Comment tu écris Kommandantur ? -+-
-- Je propose que chacun de nous expose le problème (et dénoncent les fufeurs, cf liste des votants, ceux qui ont voté NNO sont les fufeurs) à son FAI. -+- Rocou In GNU - Comment tu écris Kommandantur ? -+-
Pierre Maurette
Eric Masson :
PiLS writes:
'Lut,
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule solution: le taper explicitement.
Préférable et portable, mais quand il s'agit du séparateur renvoyé par l'OS. Ici le problème initial était différent: "Ayant récupéré une archive " etc. Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de Windows (par exemple), genre os.windows.sep, mais je ne connais pas, faudrait voir les sources ou les docstrings. A moins que ce qui concerne les autres OS ne passe pas la compilation de l'interprêteur ?
-- Pierre Maurette
Eric Masson :
PiLS <pils@invalid.ca> writes:
'Lut,
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule
solution: le taper explicitement.
Il est préférable d'utiliser os.sep :
http://docs.python.org/2/library/os.html?highlight=os.sep#os.sep
Préférable et portable, mais quand il s'agit du séparateur renvoyé par
l'OS. Ici le problème initial était différent: "Ayant récupéré une
archive " etc.
Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de
Windows (par exemple), genre os.windows.sep, mais je ne connais pas,
faudrait voir les sources ou les docstrings. A moins que ce qui
concerne les autres OS ne passe pas la compilation de l'interprêteur ?
Préférable et portable, mais quand il s'agit du séparateur renvoyé par l'OS. Ici le problème initial était différent: "Ayant récupéré une archive " etc. Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de Windows (par exemple), genre os.windows.sep, mais je ne connais pas, faudrait voir les sources ou les docstrings. A moins que ce qui concerne les autres OS ne passe pas la compilation de l'interprêteur ?
-- Pierre Maurette
Pierre Maurette
PiLS :
[...]
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule solution: le taper explicitement. Par exemple
for nom in listdir("."): nomcourt=nom[4:] os.rename("rep"+nomcourt, nomcourt)
ou bien
for nom in listdir("."): nomcourt=nom[4:] os.rename(r"rep"+nomcourt, nomcourt)
(note: pas testé, mais les deux devraient marcher)
Je suis souvent embêté avec ce genre de truc. Soit à initialiser la chaine 'grosnavet'. Il y a bien entendu des solutions: r'grosnavet' + '' ''.join(['gros', 'navet', '']) r'grosnavet '[:-1] et d'autres, mais c'est assez capillotracté. Et surtout si les gros navets sont rares dans le vrai code, les cas de chemins copiés dans l'explorateur et qu'on voudrait coller dans un script sont fréquents. Certes on peut souvent, mais pas toujours, simplement éliminer le final. J'aime bien utiliser un fichier de données, en fait réinventer des inifiles simplifiés, dans lesquels je peux coller mes paramètres. Par exemple: <fichier test>
Pour l'exploiter, c'est tout simple, d'autant que c'est réutilisable: <code> def valide(ligne): return len(ligne) > 0 and not ligne.startswith('#')
prepare = string.strip
for nom in filter(valide, map(prepare, open('test', 'r').read().split('n'))): print nom </code> C'est même une version de luxe. On peut très bien placer les données dans le script qui va se parser lui-même, entre "balises": """debdata [blah] findata"""
J'ai sans doute loupé des trucs plus académiques, j'ai utilisé Python avant de l'apprendre vraiment, et ça me va bien comme ça.
-- Pierre Maurette
PiLS :
[...]
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule
solution: le taper explicitement.
Par exemple
for nom in listdir("."):
nomcourt=nom[4:]
os.rename("rep\"+nomcourt, nomcourt)
ou bien
for nom in listdir("."):
nomcourt=nom[4:]
os.rename(r"rep"+nomcourt, nomcourt)
(note: pas testé, mais les deux devraient marcher)
Je suis souvent embêté avec ce genre de truc. Soit à initialiser la
chaine 'grosnavet'. Il y a bien entendu des solutions:
r'grosnavet' + '\'
'\'.join(['gros', 'navet', ''])
r'grosnavet '[:-1]
et d'autres, mais c'est assez capillotracté. Et surtout si les gros
navets sont rares dans le vrai code, les cas de chemins copiés dans
l'explorateur et qu'on voudrait coller dans un script sont fréquents.
Certes on peut souvent, mais pas toujours, simplement éliminer le
final.
J'aime bien utiliser un fichier de données, en fait réinventer des
inifiles simplifiés, dans lesquels je peux coller mes paramètres. Par
exemple:
<fichier test>
Pour l'exploiter, c'est tout simple, d'autant que c'est réutilisable:
<code>
def valide(ligne):
return len(ligne) > 0 and not ligne.startswith('#')
prepare = string.strip
for nom in filter(valide, map(prepare, open('test',
'r').read().split('n'))):
print nom
</code>
C'est même une version de luxe.
On peut très bien placer les données dans le script qui va se parser
lui-même, entre "balises":
"""debdata
[blah]
findata"""
J'ai sans doute loupé des trucs plus académiques, j'ai utilisé Python
avant de l'apprendre vraiment, et ça me va bien comme ça.
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule solution: le taper explicitement. Par exemple
for nom in listdir("."): nomcourt=nom[4:] os.rename("rep"+nomcourt, nomcourt)
ou bien
for nom in listdir("."): nomcourt=nom[4:] os.rename(r"rep"+nomcourt, nomcourt)
(note: pas testé, mais les deux devraient marcher)
Je suis souvent embêté avec ce genre de truc. Soit à initialiser la chaine 'grosnavet'. Il y a bien entendu des solutions: r'grosnavet' + '' ''.join(['gros', 'navet', '']) r'grosnavet '[:-1] et d'autres, mais c'est assez capillotracté. Et surtout si les gros navets sont rares dans le vrai code, les cas de chemins copiés dans l'explorateur et qu'on voudrait coller dans un script sont fréquents. Certes on peut souvent, mais pas toujours, simplement éliminer le final. J'aime bien utiliser un fichier de données, en fait réinventer des inifiles simplifiés, dans lesquels je peux coller mes paramètres. Par exemple: <fichier test>
Pour l'exploiter, c'est tout simple, d'autant que c'est réutilisable: <code> def valide(ligne): return len(ligne) > 0 and not ligne.startswith('#')
prepare = string.strip
for nom in filter(valide, map(prepare, open('test', 'r').read().split('n'))): print nom </code> C'est même une version de luxe. On peut très bien placer les données dans le script qui va se parser lui-même, entre "balises": """debdata [blah] findata"""
J'ai sans doute loupé des trucs plus académiques, j'ai utilisé Python avant de l'apprendre vraiment, et ça me va bien comme ça.
-- Pierre Maurette
Paul Gaborit
À (at) Mon, 26 Nov 2012 06:30:35 +0100, Pierre Maurette écrivait (wrote):
Eric Masson :
PiLS writes:
'Lut,
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule solution: le taper explicitement.
Préférable et portable, mais quand il s'agit du séparateur renvoyé par l'OS. Ici le problème initial était différent: "Ayant récupéré une archive " etc. Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de Windows (par exemple), genre os.windows.sep, mais je ne connais pas, faudrait voir les sources ou les docstrings. A moins que ce qui concerne les autres OS ne passe pas la compilation de l'interprêteur ?
Soit effectivement, il existe un module tout prêt pour gérer les chemins de manière spécifique à l'OS courant (sans avoir à s'en préoccuper).
Soit, il suffit d'utiliser le '/' (à la place de '') que la bibliothèque Windows comprend depuis des lustres. Et si les chemins proviennent d'une source externe et contiennent des '', un petit traitement préalable pour remplacer tous les '' par des '/' fonctionnera très bien...
À (at) Mon, 26 Nov 2012 06:30:35 +0100,
Pierre Maurette <maurette.pierre@free.fr> écrivait (wrote):
Eric Masson :
PiLS <pils@invalid.ca> writes:
'Lut,
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule
solution: le taper explicitement.
Il est préférable d'utiliser os.sep :
http://docs.python.org/2/library/os.html?highlight=os.sep#os.sep
Préférable et portable, mais quand il s'agit du séparateur renvoyé par
l'OS. Ici le problème initial était différent: "Ayant récupéré une
archive " etc.
Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de
Windows (par exemple), genre os.windows.sep, mais je ne connais pas,
faudrait voir les sources ou les docstrings. A moins que ce qui concerne
les autres OS ne passe pas la compilation de l'interprêteur ?
Soit effectivement, il existe un module tout prêt pour gérer les chemins
de manière spécifique à l'OS courant (sans avoir à s'en préoccuper).
Soit, il suffit d'utiliser le '/' (à la place de '') que la
bibliothèque Windows comprend depuis des lustres. Et si les chemins
proviennent d'une source externe et contiennent des '', un petit
traitement préalable pour remplacer tous les '' par des '/'
fonctionnera très bien...
--
Paul Gaborit - <http://perso.mines-albi.fr/~gaborit/>
Préférable et portable, mais quand il s'agit du séparateur renvoyé par l'OS. Ici le problème initial était différent: "Ayant récupéré une archive " etc. Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de Windows (par exemple), genre os.windows.sep, mais je ne connais pas, faudrait voir les sources ou les docstrings. A moins que ce qui concerne les autres OS ne passe pas la compilation de l'interprêteur ?
Soit effectivement, il existe un module tout prêt pour gérer les chemins de manière spécifique à l'OS courant (sans avoir à s'en préoccuper).
Soit, il suffit d'utiliser le '/' (à la place de '') que la bibliothèque Windows comprend depuis des lustres. Et si les chemins proviennent d'une source externe et contiennent des '', un petit traitement préalable pour remplacer tous les '' par des '/' fonctionnera très bien...
En effet. Sauf que là on essaie de renommer un fichier dont le nom contient un backslash. On ne parle pas de séparateurs.
Préférable et portable, mais quand il s'agit du séparateur renvoyé par l'OS. Ici le problème initial était différent: "Ayant récupéré une archive " etc. Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de Windows (par exemple), genre os.windows.sep, mais je ne connais pas, faudrait voir les sources ou les docstrings. A moins que ce qui concerne les autres OS ne passe pas la compilation de l'interprêteur ?
Soit effectivement, il existe un module tout prêt pour gérer les chemins de manière spécifique à l'OS courant (sans avoir à s'en préoccuper).
Soit, il suffit d'utiliser le '/' (à la place de '') que la bibliothèque Windows comprend depuis des lustres. Et si les chemins proviennent d'une source externe et contiennent des '', un petit traitement préalable pour remplacer tous les '' par des '/' fonctionnera très bien...
idem. Le problème n'est pas un problème de chemin mais de traitement d'une chaîne de caractères qui contient un backslash. A la rigueur, que ce soit un nom de fichier on s'en balance.
On est bien d'accord que _ne pas_ avoir eu de backslash dans le nom du fichier aurait été préférable, mais là n'est pas la question.
Bon de toute façon le backslash n'était même pas vraiement le problème apparemment, donc tout ma réponse est un peu vaine. Désolé
-- PiLS
Paul Gaborit <Paul.Gaborit@invalid.invalid> à ploppé:
À (at) Mon, 26 Nov 2012 06:30:35 +0100,
Pierre Maurette <maurette.pierre@free.fr> écrivait (wrote):
Eric Masson :
PiLS <pils@invalid.ca> writes:
'Lut,
Oui: il faut "échapper" le backslash, pour ça je ne vois qu'une seule
solution: le taper explicitement.
Il est préférable d'utiliser os.sep :
http://docs.python.org/2/library/os.html?highlight=os.sep#os.sep
En effet. Sauf que là on essaie de renommer un fichier dont le nom
contient un backslash. On ne parle pas de séparateurs.
Préférable et portable, mais quand il s'agit du séparateur renvoyé par
l'OS. Ici le problème initial était différent: "Ayant récupéré une
archive " etc.
Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de
Windows (par exemple), genre os.windows.sep, mais je ne connais pas,
faudrait voir les sources ou les docstrings. A moins que ce qui concerne
les autres OS ne passe pas la compilation de l'interprêteur ?
Soit effectivement, il existe un module tout prêt pour gérer les chemins
de manière spécifique à l'OS courant (sans avoir à s'en préoccuper).
Soit, il suffit d'utiliser le '/' (à la place de '') que la
bibliothèque Windows comprend depuis des lustres. Et si les chemins
proviennent d'une source externe et contiennent des '', un petit
traitement préalable pour remplacer tous les '' par des '/'
fonctionnera très bien...
idem.
Le problème n'est pas un problème de chemin mais de traitement d'une
chaîne de caractères qui contient un backslash. A la rigueur, que ce
soit un nom de fichier on s'en balance.
On est bien d'accord que _ne pas_ avoir eu de backslash dans le nom
du fichier aurait été préférable, mais là n'est pas la question.
Bon de toute façon le backslash n'était même pas vraiement le
problème apparemment, donc tout ma réponse est un peu vaine. Désolé
En effet. Sauf que là on essaie de renommer un fichier dont le nom contient un backslash. On ne parle pas de séparateurs.
Préférable et portable, mais quand il s'agit du séparateur renvoyé par l'OS. Ici le problème initial était différent: "Ayant récupéré une archive " etc. Il y a peut-être moyen d'accéder quel que soit l'OS au séparateur de Windows (par exemple), genre os.windows.sep, mais je ne connais pas, faudrait voir les sources ou les docstrings. A moins que ce qui concerne les autres OS ne passe pas la compilation de l'interprêteur ?
Soit effectivement, il existe un module tout prêt pour gérer les chemins de manière spécifique à l'OS courant (sans avoir à s'en préoccuper).
Soit, il suffit d'utiliser le '/' (à la place de '') que la bibliothèque Windows comprend depuis des lustres. Et si les chemins proviennent d'une source externe et contiennent des '', un petit traitement préalable pour remplacer tous les '' par des '/' fonctionnera très bien...
idem. Le problème n'est pas un problème de chemin mais de traitement d'une chaîne de caractères qui contient un backslash. A la rigueur, que ce soit un nom de fichier on s'en balance.
On est bien d'accord que _ne pas_ avoir eu de backslash dans le nom du fichier aurait été préférable, mais là n'est pas la question.
Bon de toute façon le backslash n'était même pas vraiement le problème apparemment, donc tout ma réponse est un peu vaine. Désolé
-- PiLS
Paul Gaborit
À (at) Mon, 26 Nov 2012 16:07:45 +0000 (UTC), PiLS écrivait (wrote):
En effet. Sauf que là on essaie de renommer un fichier dont le nom contient un backslash. On ne parle pas de séparateurs.
Un nom de fichier qui contient un backslash sur un filesystem NTFS... j'ai quand même un gros doute. Êtes-vous sûr que c'est bien le cas ?
[...]
Bon de toute façon le backslash n'était même pas vraiement le problème apparemment, donc tout ma réponse est un peu vaine. Désolé
À (at) Mon, 26 Nov 2012 16:07:45 +0000 (UTC), PiLS écrivait (wrote):
En effet. Sauf que là on essaie de renommer un fichier dont le nom contient un backslash. On ne parle pas de séparateurs.
Un nom de fichier qui contient un backslash sur un filesystem NTFS... j'ai quand même un gros doute. Êtes-vous sûr que c'est bien le cas ?
Je suppose que le filesystem n'est pas NTFS, sinon moi aussi j'ai un doute. François (OP) ne précise pas le système d'exploitation. On peut supposer que l'archive problématique à été crée sous MSWindows mais à part ça...
[...]
Bon de toute façon le backslash n'était même pas vraiement le problème apparemment, donc tout ma réponse est un peu vaine. Désolé
Bon alors c'est quoi le problème ?
D'aprés une réponse de François plus haut dans ce fil, il ne spécifiait pas le bon répertoire, encore que ça ne soit pas visible dans l'exemple de code soumis...
arrh désolé, c'était un pb de répertoire : je lisais la liste des fichiers d'un sous-repertoire et appliquais rename dans le répertoire courant. François
encore que ce soit loin d'être évident dans l'exemple de code soumis:
import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:])
J'ai testé: ce bout de code fonctionne sur des fichiers nommés rep* En fait il se trouve que os.rename () n'a pas de problème parce que os.listdir() est suffisament malin pour "échapper" le backslash tout seul...
(d'ou on peut aussi conclure que j'utilise python 2.x, et que je ne vérifie pas mes copier-coller).
-- PiLS
Paul Gaborit <Paul.Gaborit@invalid.invalid> à ploppé:
À (at) Mon, 26 Nov 2012 16:07:45 +0000 (UTC),
PiLS <pils@invalid.ca> écrivait (wrote):
En effet. Sauf que là on essaie de renommer un fichier dont le nom
contient un backslash. On ne parle pas de séparateurs.
Un nom de fichier qui contient un backslash sur un filesystem NTFS...
j'ai quand même un gros doute. Êtes-vous sûr que c'est bien le cas ?
Je suppose que le filesystem n'est pas NTFS, sinon moi aussi j'ai un doute.
François (OP) ne précise pas le système d'exploitation. On peut
supposer que l'archive problématique à été crée sous MSWindows mais à
part ça...
[...]
Bon de toute façon le backslash n'était même pas vraiement le
problème apparemment, donc tout ma réponse est un peu vaine. Désolé
Bon alors c'est quoi le problème ?
D'aprés une réponse de François plus haut dans ce fil, il ne
spécifiait pas le bon répertoire, encore que ça ne soit pas
visible dans l'exemple de code soumis...
arrh désolé, c'était un pb de répertoire : je lisais la liste des
fichiers d'un sous-repertoire et appliquais rename dans le répertoire
courant.
François
encore que ce soit loin d'être évident dans l'exemple de code soumis:
import os
for nom in os.listdir(".") :
print(nom," --> ",nom[4:])
os.rename(nom,nom[4:])
J'ai testé: ce bout de code fonctionne sur des fichiers nommés rep*
En fait il se trouve que os.rename () n'a pas de problème parce que
os.listdir() est suffisament malin pour "échapper" le backslash tout
seul...
À (at) Mon, 26 Nov 2012 16:07:45 +0000 (UTC), PiLS écrivait (wrote):
En effet. Sauf que là on essaie de renommer un fichier dont le nom contient un backslash. On ne parle pas de séparateurs.
Un nom de fichier qui contient un backslash sur un filesystem NTFS... j'ai quand même un gros doute. Êtes-vous sûr que c'est bien le cas ?
Je suppose que le filesystem n'est pas NTFS, sinon moi aussi j'ai un doute. François (OP) ne précise pas le système d'exploitation. On peut supposer que l'archive problématique à été crée sous MSWindows mais à part ça...
[...]
Bon de toute façon le backslash n'était même pas vraiement le problème apparemment, donc tout ma réponse est un peu vaine. Désolé
Bon alors c'est quoi le problème ?
D'aprés une réponse de François plus haut dans ce fil, il ne spécifiait pas le bon répertoire, encore que ça ne soit pas visible dans l'exemple de code soumis...
arrh désolé, c'était un pb de répertoire : je lisais la liste des fichiers d'un sous-repertoire et appliquais rename dans le répertoire courant. François
encore que ce soit loin d'être évident dans l'exemple de code soumis:
import os for nom in os.listdir(".") : print(nom," --> ",nom[4:]) os.rename(nom,nom[4:])
J'ai testé: ce bout de code fonctionne sur des fichiers nommés rep* En fait il se trouve que os.rename () n'a pas de problème parce que os.listdir() est suffisament malin pour "échapper" le backslash tout seul...