J'ai un script python qui fonctionne sur trois fichiers de la façon suivante align.py * .wav * .txt * .TextGrid Cependant, j'ai un répertoire plein de fichiers que je veux boucle à travers. L'auteur original suggère de créer un script shell pour parcourir les fichiers. La partie la plus délicate de la boucle est que je dois faire correspondre trois fichiers à la fois avec trois extensions différentes pour que le script s'exécute correctement. Quelqu'un peut-il m'aider à comprendre comment créer un script shell pour faire une boucle dans un répertoire de fichiers, en faire correspondre trois d'après le nom (avec trois extensions différentes) et exécuter le script python sur chaque triplet? Merci!Script shell UNIX pour appeler python
0
A
Répondre
0
Vous pouvez utiliser glob.glob pour répertorier uniquement les wav
fichiers, puis construire l'appel comme si subprocess.Popen
:
import glob
import os
import subprocess
for wav_name in glob.glob('*.wav'):
basename,ext = os.path.splitext(wav_name)
txt_name=basename+'.txt'
grid_name=basename+'.TextGrid'
proc=subprocess.Popen(['align.py',wav_name,txt_name,grid_name])
proc.communicate()
3
En supposant que vous utilisez bash, voici un one-liner:
for f in *.wav; do align.py $f ${f%\.*}.txt ${f%\.*}.TextGrid; done
+0
Cela fonctionne très bien! – Alex
Questions connexes
- 1. Unix Shell script
- 2. Script shell Unix - mailsend
- 3. Expression régulière Script shell Unix
- 4. Script shell UNIX en boucle
- 5. Script shell UNIX et guillemets d'échappement pour le script AWK
- 6. Lecture dans le répertoire, script shell Unix
- 7. écriture d'un script shell bash unix
- 8. En ce qui concerne UNIX Shell Script
- 9. En ce qui concerne script shell Unix
- 10. Sous-chaîne Unix dans un script shell?
- 11. échapper accolades en script shell unix
- 12. Comment egrep script shell Unix variable
- 13. Script shell Unix avec commande Iseries
- 14. Commande os.system pour appeler le script shell avec des arguments
- 15. script shell unix pour analyser les journaux en utilisant grep
- 16. Unix Shell Script Syntaxe pour if et grep et -gt
- 17. Script shell Unix pour tronquer un gros fichier
- 18. Appeler un script python dans un script python
- 19. Comment appeler un script shell à partir d'un assemblage réseau
- 20. Unix Shell Scripting
- 21. Python Module importe en Terminal mais pas via Unix Shell
- 22. Appeler un autre script de ligne de commande sous UNIX
- 23. scripts shell Unix avec comptoir
- 24. Modification de la valeur CSS avec Shell Script - Unix
- 25. Comment définir un tableau multidimensionnel dans un script shell Unix
- 26. Renommer des fichiers dans un répertoire UNIX - script shell
- 27. Tri de l'entrée dans un script shell Unix
- 28. Comment convertir DATE UNIX TIMESTAMP en script shell sur MacOS
- 29. résultat de sous-processus de script shell unix
- 30. Comment exécuter un script shell Unix via GWT?
S'il y aura un fichier wave et txt pour chaque fichier TextGrid, alors je modifierais simplement le script python pour inférer les noms de ces deux, et seulement lui passer la liste * .TextGrid. Est-il faisable pour vous de changer le script python? – DSimon
Veuillez ajouter quelques exemples de fichiers et comment vous souhaitez qu'ils soient traités. Votre question ne décrit pas suffisamment ce que vous cherchez. – chmullig
Vous n'avez pas besoin de script shell du tout; Python est capable de regarder à travers les répertoires lui-même .. – poke