2010-11-26 18 views
0

que je dois écrire un programme comme celui-ci: Ecrire un programme qui lit un fichier .picasa.ini et copie des images dans de nouveaux fichiers, dont les noms sont les mêmes comme numéro d'identification de la personne sur ces images (par exemple, 8ff985a43603dbf8.jpg). S'il y a plus de personne sur l'image, cela fait plus de copies. Si une personne est sur plus d'images, remplacez plus tard les copies précédentes des images; Si une personne 8ff985a43603dbf8 peut apparaître dans plusieurs images, un seul fichier avec ce nom existera. Vous devez présumer que nous avons un fichier simple .picasa.ini.mots de Split et la création de nouveaux fichiers avec des noms différents (python)

J'ai un .ini, qui consiste:

[img_8538.jpg] 
faces=rect64(4ac022d1820c8624),**d5a2d2f6f0d7ccbc** 
backuphash=46512 

[img_8551.jpg] 
faces=rect64(acb64583d1eb84cb),**2623af3d8cb8e040**;rect64(58bf441388df9592),**d85d127e5c45cdc2** 
backuphash=8108 
... 

Est-ce une bonne façon de commencer ce programme?

for line in open('C:\Users\Admin\Desktop\podatki-picasa\.picasa.ini'): 
    if line.startswith('faces'): 
     line.split() # what must I do here to split the bolded words? 

Y a-t-il une meilleure façon de procéder? Rappelez-vous le fichier .jpg doit être créé avec un nouveau nom, donc je pense que je devrais lier le fichier .jpg en cours avec le fichier en gras.

+1

Vous devez expliquer mieux quel est le format de données pour chaque ligne du fichier 'picasa.ini' affiché. – martineau

Répondre

0

Envisagez d'utiliser ConfigParser. Ensuite, vous devrez diviser chaque valeur à la main, comme vous le décrivez.

0

Suggestions:

  1. Vos lignes ne commencent pas par « visages », de sorte que votre deuxième ligne ne fonctionne pas la façon dont vous le souhaitez. En fonction de l'aspect du reste du fichier, vous devrez peut-être uniquement vérifier si la ligne est vide ou non à ce stade.

  2. Pour obtenir les informations dont vous avez besoin, première division à « » et le travail à partir de là

Essayez une solution: Les éléments dont vous avez besoin semblent avoir toujours « » devant eux, vous pouvez commencer par diviser le signe ',' et prendre tout ce qui se trouve dans le 1-index elemnt [1 ::]. Ensuite, si ce que je pense est correct, vous divisez ces éléments deux fois: au ";" et prenez l'élément 0-index de cela et à ce "", en prenant à nouveau l'élément 0-index.

for line in open('thingy.ini'): 
if line != "\n": 
    personelements = line.split(",")[1::] 
    for person in personelements: 
     personstring = person.split(";")[0].split(" ")[0] 
     print personstring 

œuvres pour moi d'obtenir:

d5a2d2f6f0d7ccbc

2623af3d8cb8e040

d85d127e5c45cdc2

0
import ConfigParser 
import string 
config = ConfigParser.ConfigParser() 
config.read('C:\Users\Admin\Desktop\podatki-picasa\.picasa.ini') 
imgs = [] 
for item in config.sections(): 
    imgs.append(config.get(item, 'faces')) 

Ceci est encore en cours. Je veux juste demander si c'est correct.

modifier: Encore ne sais pas chaud pour séparer les mots en gras hors de là. Cette fonction de partage est vraiment une douleur pour moi.