Maison >développement back-end >Tutoriel Python >Explication détaillée de la solution d'erreur lors du chargement de fichiers mp3 avec des noms chinois dans Pygame

Explication détaillée de la solution d'erreur lors du chargement de fichiers mp3 avec des noms chinois dans Pygame

高洛峰
高洛峰original
2017-03-31 10:04:343446parcourir

#pygame lit les fichiers mp3 :

Ici, l'auteur présente uniquement une méthode facile à comprendre

Explication détaillée de la solution derreur lors du chargement de fichiers mp3 avec des noms chinois dans Pygame

Ouvrez le document officiel, et j'ai trouvé que, comme la découverte Comme le Nouveau Monde, ce type est trop puissant, et maintenant je ne peux l'utiliser que pour lire mes mp3. Eh bien, le reste attendra d'être découvert plus tard, voici un code de test pour lire des mp3. :

import pygame
path = 'Pam Pam - Noel Toto.mp3'pygame.mixer.init()
pygame.mixer.music.load(path)
pygame.mixer.music.play()

Parmi eux, path représente le chemin et le nom du fichier mp3 à lire. Ici, l'auteur utilise le ralenti d'origine, qui peut lire le mp3 normalement

#. Bug trouvé :

Ensuite, il y a le problème que l'auteur a rencontré lorsque j'ai terminé le test de lecture de la liste de musique dans l'après-midi, c'est-à-dire lorsque le nom du fichier mp3 à charger contient du chinois, pygame.error.

Explication détaillée de la solution derreur lors du chargement de fichiers mp3 avec des noms chinois dans Pygame

C'est embarrassant. Grâce au chemin de sortie, j'ai découvert qu'il n'y avait pas de caractères tronqués en chinois. Je l'ai recherché sur Google et j'ai découvert que certaines personnes de la communauté chinoise ont dit que <.>python devrait essayer d'éviter le chinois. Certaines personnes ont également dit que l'encodage pouvait être modifié. Mais j'ai essayé. Il semble que ce ne soit pas possible dans les communautés anglaises telles que Stack . Débordement. Après tout, les étrangers ne se soucient pas beaucoup de "nos propres affaires". J'ai donc cherché pendant longtemps et je n'ai pas trouvé de solution efficace. les experts devraient pouvoir le résoudre en changeant le code source dans pygame. Ce n'est pas quelque chose que je peux faire ^_^.

#debug :

L'auteur a trouvé une méthode amusante, et il devrait y avoir une meilleure méthode d'implémentation. Permettez-moi d'abord de parler sans vergogne de mes idées de débogage :

Tout d'abord, lorsque vous rencontrez le nom chinois mp3, c'est pygame.error qui se produit à ce moment-là. se produit dans le programme. Il est naturel de penser à l'instruction

try De cette façon, lorsqu'une erreur se produit lorsque le nom chinois mp3 est rencontré, elle ira automatiquement au contenu excepté. en copiant le fichier à lire dans le répertoire spécifié et renommez-le en non chinois. Enfin, chargez ce fichier mp3 non chinois, contournant ainsi la faille de reconnaissance chinoise de pygame. Le code ci-dessous :

# Effet d'exécution :
import pygameimport shutil
path = '一走过的日子-刘德华.mp3'pygame.mixer.init()try:
    pygame.mixer.music.load(path)
    pygame.mixer.music.play()except:    print('something is wrong~\nbut i see you.')
    shutil.copyfile(path,'play.mp3')
    pygame.mixer.music.load('play.mp3')
    pygame.mixer.music.play()

Explication détaillée de la solution derreur lors du chargement de fichiers mp3 avec des noms chinois dans PygameÀ ce stade, le programme peut lire normalement les fichiers mp3 chinois. En fait, ce problème ne résout pas essentiellement le problème de reconnaissance chinoise de pygame, mais. contourne ce problème. Cette méthode présente également des inconvénients , c'est-à-dire que le fichier play.mp3 sera généré, qui peut être placé dans le répertoire

cache

lorsque vous travaillez sur le projet . point, la description de la résolution du problème de reconnaissance chinoise de pygame rencontré cet après-midi est terminée. S'il existe une meilleure méthode, veuillez me le faire savoir dans les commentaires, merci

Je viens de regarder le pygame python3.3.3. et j'ai fait quelques recherches sur le fichier mixer.pyd. J'ai trouvé le suffixe .pyd et j'ai découvert qu'il s'agissait d'un fichier binaire comme dll. Changez-le. Le contenu doit être décompilé. En d'autres termes, python n'est pas complètement open source.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn