Je souhaite faire un script python qui recherche tous les fichiers MP3 de
mon disque, et qui renomme systématiquement les fichiers qui ont des
espaces en des fichiers qui ont des '_' dans le nom.
Ex:
/tmp/blabla/le fichier.mp3
en
/tmp/blabla/le_fichier.mp3
La profondeur dans l'arbirescence du système de fichier est variable,
dans la mesure ou il y a des compilations et des artistes qui ont sortis
plusieurs albums... Je suis sous Linux.
Bref, avec find ça serait un simple:
$ find $RACINE -name '*.mp3'
Avec glob.glob(), je ne récupère que les répertoires et fichiers avec
une profondeur 1, sans posibilité d'aller plus "bas".
Si j'essaie avec os.exec*('/bin/find', racine, '-name', '*.mp3'), alors je
ne sais pas comment récupérer le résutat en liste (ou tuple).
Comment conseillez-vous de faire?
Sinon, moi en interactif, j'utilise ipython, qui permet de récupérer la
stdout sous forme de liste. Mais si je veux mettre le struc dans un
programme, ce n'est pas idéal. Et il y a environ 5000 fichers à traiter.
Merci d'avance.
PS: Ne vous en faites pas ce n'est pas du warez, je suis juste responsable
d'une webradio communautaire...
--
SPIP, phpNuke, Plone, opengroupware... c'est bien
CPS c'est mieux: http://www.cps-project.org/
Hébergement de sites CPS: http://www.objectis.org/
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
Koollman
R12y writes:
Bonjour,
Je souhaite faire un script python qui recherche tous les fichiers MP3 de mon disque, et qui renomme systématiquement les fichiers qui ont des espaces en des fichiers qui ont des '_' dans le nom. Ex:
/tmp/blabla/le fichier.mp3 en /tmp/blabla/le_fichier.mp3
La profondeur dans l'arbirescence du système de fichier est variable, dans la mesure ou il y a des compilations et des artistes qui ont sortis plusieurs albums... Je suis sous Linux.
Bref, avec find ça serait un simple:
$ find $RACINE -name '*.mp3'
Avec glob.glob(), je ne récupère que les répertoires et fichiers avec une profondeur 1, sans posibilité d'aller plus "bas".
Si j'essaie avec os.exec*('/bin/find', racine, '-name', '*.mp3'), alors je ne sais pas comment récupérer le résutat en liste (ou tuple).
Comment conseillez-vous de faire?
Je te conseille d'utiliser os.path.walk:
from os.path import walk,join from os import rename
racine = "/tmp"
def rename_space(arg, dir, fnames): for name in fnames: if name.endswith(".mp3") and " " in name: old_name = join(dir, name) new_name = name.replace(" ", "_") new_name = join(dir, new_name) print "rename ", old_name, new_name
walk(racine, rename_space, None)
(ce code devrait marcher, mais je n'ai pas teste)
-- Koollman The trouble with computers is that they do what you tell them, not what you want.
Je souhaite faire un script python qui recherche tous les fichiers MP3 de
mon disque, et qui renomme systématiquement les fichiers qui ont des
espaces en des fichiers qui ont des '_' dans le nom.
Ex:
/tmp/blabla/le fichier.mp3
en
/tmp/blabla/le_fichier.mp3
La profondeur dans l'arbirescence du système de fichier est variable,
dans la mesure ou il y a des compilations et des artistes qui ont sortis
plusieurs albums... Je suis sous Linux.
Bref, avec find ça serait un simple:
$ find $RACINE -name '*.mp3'
Avec glob.glob(), je ne récupère que les répertoires et fichiers avec
une profondeur 1, sans posibilité d'aller plus "bas".
Si j'essaie avec os.exec*('/bin/find', racine, '-name', '*.mp3'), alors je
ne sais pas comment récupérer le résutat en liste (ou tuple).
Comment conseillez-vous de faire?
Je te conseille d'utiliser os.path.walk:
from os.path import walk,join
from os import rename
racine = "/tmp"
def rename_space(arg, dir, fnames):
for name in fnames:
if name.endswith(".mp3") and " " in name:
old_name = join(dir, name)
new_name = name.replace(" ", "_")
new_name = join(dir, new_name)
print "rename ", old_name, new_name
walk(racine, rename_space, None)
(ce code devrait marcher, mais je n'ai pas teste)
--
Koollman
The trouble with computers is that they do what you tell them, not what
you want.
Je souhaite faire un script python qui recherche tous les fichiers MP3 de mon disque, et qui renomme systématiquement les fichiers qui ont des espaces en des fichiers qui ont des '_' dans le nom. Ex:
/tmp/blabla/le fichier.mp3 en /tmp/blabla/le_fichier.mp3
La profondeur dans l'arbirescence du système de fichier est variable, dans la mesure ou il y a des compilations et des artistes qui ont sortis plusieurs albums... Je suis sous Linux.
Bref, avec find ça serait un simple:
$ find $RACINE -name '*.mp3'
Avec glob.glob(), je ne récupère que les répertoires et fichiers avec une profondeur 1, sans posibilité d'aller plus "bas".
Si j'essaie avec os.exec*('/bin/find', racine, '-name', '*.mp3'), alors je ne sais pas comment récupérer le résutat en liste (ou tuple).
Comment conseillez-vous de faire?
Je te conseille d'utiliser os.path.walk:
from os.path import walk,join from os import rename
racine = "/tmp"
def rename_space(arg, dir, fnames): for name in fnames: if name.endswith(".mp3") and " " in name: old_name = join(dir, name) new_name = name.replace(" ", "_") new_name = join(dir, new_name) print "rename ", old_name, new_name
walk(racine, rename_space, None)
(ce code devrait marcher, mais je n'ai pas teste)
-- Koollman The trouble with computers is that they do what you tell them, not what you want.
tiissa
R12y wrote:
Si j'essaie avec os.exec*('/bin/find', racine, '-name', '*.mp3'), alors je ne sais pas comment récupérer le résutat en liste (ou tuple).
Comment conseillez-vous de faire?
Regarder os.popen [1] :
######## import os
for filename in os.popen('ls -L'): print filename, ########
Je souhaite faire un script python qui recherche tous les fichiers MP3 de mon disque, et qui renomme systématiquement les fichiers qui ont des espaces en des fichiers qui ont des '_' dans le nom. Ex:
/tmp/blabla/le fichier.mp3 en /tmp/blabla/le_fichier.mp3
[snip]
Bref, avec find ça serait un simple:
$ find $RACINE -name '*.mp3' [snip]
pourquoi ne pas partir du find, mettre le résultat dans un fichier que tu parses ensuite avec ton script python?
$ find $RACINE -name *.mp3 > mp3.txt
et le script Python serait alors:
import os input=file('mp3.txt') for i in input: os.rename(i, i.replace(' ', '_')) input.close()
après tu peux faire un script exécutable qui lit la liste des fichiers sur l'entrée standard et donc "piper" la sortie du find (philosophie unix):
$ find $RACINE -name *.mp3 | nospace.py
hth
-- rafi
"Imagination is more important than knowledge." (Albert Einstein)
R12y wrote:
Bonjour,
Je souhaite faire un script python qui recherche tous les fichiers MP3 de
mon disque, et qui renomme systématiquement les fichiers qui ont des
espaces en des fichiers qui ont des '_' dans le nom.
Ex:
/tmp/blabla/le fichier.mp3
en
/tmp/blabla/le_fichier.mp3
[snip]
Bref, avec find ça serait un simple:
$ find $RACINE -name '*.mp3'
[snip]
pourquoi ne pas partir du find, mettre le résultat dans un fichier que
tu parses ensuite avec ton script python?
$ find $RACINE -name *.mp3 > mp3.txt
et le script Python serait alors:
import os
input=file('mp3.txt')
for i in input:
os.rename(i, i.replace(' ', '_'))
input.close()
après tu peux faire un script exécutable qui lit la liste des fichiers
sur l'entrée standard et donc "piper" la sortie du find (philosophie unix):
$ find $RACINE -name *.mp3 | nospace.py
hth
--
rafi
"Imagination is more important than knowledge."
(Albert Einstein)
Je souhaite faire un script python qui recherche tous les fichiers MP3 de mon disque, et qui renomme systématiquement les fichiers qui ont des espaces en des fichiers qui ont des '_' dans le nom. Ex:
/tmp/blabla/le fichier.mp3 en /tmp/blabla/le_fichier.mp3
[snip]
Bref, avec find ça serait un simple:
$ find $RACINE -name '*.mp3' [snip]
pourquoi ne pas partir du find, mettre le résultat dans un fichier que tu parses ensuite avec ton script python?
$ find $RACINE -name *.mp3 > mp3.txt
et le script Python serait alors:
import os input=file('mp3.txt') for i in input: os.rename(i, i.replace(' ', '_')) input.close()
après tu peux faire un script exécutable qui lit la liste des fichiers sur l'entrée standard et donc "piper" la sortie du find (philosophie unix):
$ find $RACINE -name *.mp3 | nospace.py
hth
-- rafi
"Imagination is more important than knowledge." (Albert Einstein)
rafi
rafi wrote:
oups, posté un peu vite: il faut faire un strip() sur le `i' sinon il reste le 'n'
et le script Python serait alors:
import os input=file('mp3.txt') for i in input: os.rename(i, i.replace(' ', '_')) input.close()
ps et pour optimiser faire un test sur la présence d'un blanc dans le nom du fichier (mais moi et les optimisations, même s'il y a 5000 fichier, une fois que le script a fait la manip il ne sert plus alors...)
-- rafi
"Imagination is more important than knowledge." (Albert Einstein)
rafi wrote:
oups, posté un peu vite: il faut faire un strip() sur le `i' sinon il
reste le 'n'
et le script Python serait alors:
import os
input=file('mp3.txt')
for i in input:
os.rename(i, i.replace(' ', '_'))
input.close()
ps et pour optimiser faire un test sur la présence d'un blanc dans le
nom du fichier (mais moi et les optimisations, même s'il y a 5000
fichier, une fois que le script a fait la manip il ne sert plus alors...)
--
rafi
"Imagination is more important than knowledge."
(Albert Einstein)
oups, posté un peu vite: il faut faire un strip() sur le `i' sinon il reste le 'n'
et le script Python serait alors:
import os input=file('mp3.txt') for i in input: os.rename(i, i.replace(' ', '_')) input.close()
ps et pour optimiser faire un test sur la présence d'un blanc dans le nom du fichier (mais moi et les optimisations, même s'il y a 5000 fichier, une fois que le script a fait la manip il ne sert plus alors...)
-- rafi
"Imagination is more important than knowledge." (Albert Einstein)
J.Pierre Pourrez
Le Sat, 03 Sep 2005 22:59:02 +0200, R12y a écrit :
Bonjour,
Je souhaite faire un script python qui recherche tous les fichiers MP3 de mon disque, et qui renomme systématiquement les fichiers qui ont des espaces en des fichiers qui ont des '_' dans le nom. Ex: ..... $ find $RACINE -name '*.mp3'
PS: Ne vous en faites pas ce n'est pas du warez, je suis juste responsable d'une webradio communautaire... On a droit à l'URL ?
Cordialement Jean-Pierre
Le Sat, 03 Sep 2005 22:59:02 +0200, R12y a écrit :
Bonjour,
Je souhaite faire un script python qui recherche tous les fichiers MP3 de
mon disque, et qui renomme systématiquement les fichiers qui ont des
espaces en des fichiers qui ont des '_' dans le nom. Ex:
.....
$ find $RACINE -name '*.mp3'
Le Sat, 03 Sep 2005 22:59:02 +0200, R12y a écrit :
Bonjour,
Je souhaite faire un script python qui recherche tous les fichiers MP3 de mon disque, et qui renomme systématiquement les fichiers qui ont des espaces en des fichiers qui ont des '_' dans le nom. Ex: ..... $ find $RACINE -name '*.mp3'