0
votes

Problème avec des variables multiples dans la mise en forme de chaîne

J'ai plusieurs fichiers dans un dossier nommé t_000.png , t_001.png , t_002.png et ainsi de suite. J'ai fait une boucle pour les importer à l'aide de la mise en forme de chaîne. Mais quand j'utilise la boucle, j'ai eu l'erreur

aucun fichier ou répertoire de ce type: '/file/t_0.png'

C'est le code que j'ai utilisé, je pense que je devrais utiliser plusieurs% s mais je ne comprends pas comment. xxx


4 commentaires

Que se passe-t-il si vous exécutez: importer un système d'exploitation puis os.listdir () ? Aussi, veuillez fournir le code menant à cela. Quelle est la valeur dans dir ?


Essayez-vous d'accéder au contenu du fichier ou de vos noms? Précisez s'il vous plaît


Dir est le chemin d'accès au répertoire où les fichiers sont dir = / Share / Desktop / Fichier /


Si vous voulez 3 places décimales laissées à gauche avec '0' s, indiquez au formateur (et laissez le formateur faire le numéro à la conversion des chiffres).


3 Réponses :


2
votes

Vous devez rembourrer la chaîne avec des zéros de premier plan. Avec le type de formatage que vous utilisez actuellement, cela devrait fonctionner: xxx pré>

où la chaîne de format % 03s code> signifie "Cela devrait avoir une longueur 3 caractères et un espace vide devrait être rembourré par des zéros de premier plan ". P>

Vous pouvez également utiliser l'autre syntaxe de formatage de la chaîne de Python (plus récente), qui est un peu plus succinct: p>

im = Image.open(f"{dir}t_{i:03d}")


2 commentaires

La première approche ne fonctionne pas, devrait être 't_% ​​03d.png'% i , comme d est pour int objets, pas STR .


@ Norok2 Vous avez absolument raison, je l'ai fait dans ma console Python lorsque je l'essais, mais j'ai oublié de le faire ici. La réponse a été corrigée en conséquence, merci



2
votes

Vous ne remplissez pas le numéro avec des zéros, vous obtenez ainsi t_0.png au lieu de t_000.png .

la façon dont le moyen recommandé de le faire en python 3 est via la fonction str.cformat : xxx

Vous pouvez voir plus d'exemples dans La documentation .

littéraux de chaînes formatés sont aussi Une option si vous utilisez Python 3.6 ou une version plus récente, voir la réponse de Green Cloak Guy pour cela.


0 commentaires

1
votes

Essayez ceci: xxx

(modifier: f't_ {i: 03d} .png ' to ' t _ {: 03d} .png 'format (i) ou 't_% ​​03d.png'% i pour versions de Python avant 3.6).

Le truc était de spécifier un certain Nombre de zéros de premier plan, jetez un coup d'œil au Documents officiels pour plus INFO se terminant par un séparateur de répertoire (c.-à-d. '/' / '/' / '/' pour votre plate-forme) ou non.

Notez également que dir et fichier sont Noms réservés à Python et vous voudrez peut-être renommer vos variables. Vérifiez également que si fichier est un tableau numpy, fichier [i] = im peut ne pas fonctionner.


0 commentaires