2017-09-25 4 views
-1

Disons que j'ai un fichier csv avec deux colonnes:fichiers nom Python à sa valeur correspondante dans un csv

HEX;TITLE 
0xAB;BN4 
0xAC;ZF4 
0xAD;ET6 

J'ai un script python qui lit le csv et transforme chaque hexagone à une photo, et écrit à un jpeg. Ceci est le script afin que vous puissiez voir ce qu'il fait:

import binascii 
import os 

count = 0 

with open('photos.txt', 'r') as f: 
    for i in f: 

     count = count + 1 

     photo = i[2:] 

     cleaned = photo.strip("\r\n") 

     transform = binascii.a2b_hex(cleaned) 

     with open("{}.jpg".format(count), 'wb') as output: 
      output.write(transform) 

f.close() 

Le compte dans mon script donne un nom au fichier et il est incrémentiel. Dans le dossier je verrai: 1.jpeg, 2.jpeg, 3.jpeg et ainsi de suite.

Mais ma question est: Comment puis-je nommer ces fichiers à sa valeur de titre correspondant dans le csv? Alors que le premier fichier sera BN4.jpeg, et le deuxième fichier ZF4.jpeg?

FYI: le fichier d'entrée a actuellement une colonne contenant l'hexagone pour le script ci-dessus.

Répondre

0

Utilisez le module csv pour obtenir deux champs distincts. Pas besoin de strip, juste déballer les données lors de la lecture:

with open('photos.csv', 'r') as f: 
    cr = csv.reader(f,delimiter=";") 
    for photo,filename in cr: 

     transform = binascii.a2b_hex(photo[2:]) 

     with open("{}.jpg".format(filename), 'wb') as output: 
      output.write(transform) 
+0

Merci pour votre réponse. J'ai besoin de retirer le 0x de l'hexagone et le retour chariot, donc je dois dépouiller et nettoyer. Je ne l'ai pas fonctionné pour le moment, cela donne une erreur de chaîne de longueur impaire donc l'hex n'est pas correctement donné à binascii. – Donald