2011-08-04 5 views
1

Je ne suis pas un très bon codeur. Mais je veux vraiment automatiser quelque chose que je dois faire au travail. Fondamentalement, j'ai un tas de placemarkers dans Google Earth montrant les trous de main d'un réseau de fibre municipal. J'ai quelques photos de chaque trou de main que je veux placer comme balise dans le fichier .kml. Fondamentalement, je veux l'avoir ainsi quand ils cliquent sur un repère dans Google Earth, il fait apparaître la petite bulle de description et montre les images pour chaque trou de main et probablement d'autres informations vitales.Trouver et ajouter un fichier .kml en utilisant python

À l'heure actuelle, j'ai chaque trou de main marqué TO-. Donc, le numéro de trou de main 101 a un TO-101. Et j'ai déjà fait un script qui a renommé toutes les images pour correspondre au nom. Donc, si le trou de la main TO-101 a 3 images, ce serait TO-101-1.jpg, TO-101-2.jpg, TO-101-3.jpg. Donc, fondamentalement, j'essaye de faire un script python qui lit le fichier kml (que j'ai fait avec succès). J'ai besoin pour trouver le correspondant TO-101 ou selon handhole dans le fichier .kml, ajoutez une ligne en dessous de cette ligne qui lit:

<description> <img src="TO-101-1.jpg"><img src="TO-101-2.jpg"></description>. 

besoin de faire cela pour environ 5000 photos et 2000 ou ainsi des trous à la main .

J'ai essayé ceci:

import string, glob, sys, os, fileinput 
f = open('./hand-holes.kml','r') 

while f: 
line = f.readline() 
if line == "<name>TO-101</name>": 
print line 

Et je ne peux même pas à trouver et imprimer cette ligne. Je sais que la ligne est dans le fichier, et je sais que le chemin est bon. Parce que si je commente la ligne if == "TO-101" il affiche le contenu du fichier. Donc, si je n'arrive même pas à faire fonctionner ça, il n'y a aucune chance que je fasse fonctionner le reste. J'ai essayé plusieurs morceaux de recherche et remplace le type de code d'exemple de python. Certains d'entre eux utilisent une bibliothèque de chaînes, dont je ne suis pas sûr si j'ai besoin d'utiliser.

Quelqu'un peut-il m'aider? Merci

Renosis

+0

Cela ressemble à une forme de xml ... Si l'analyse avec lxml peut fonctionner. –

+0

Il existe des modules Python pour travailler avec KML: http://pypi.python.org/pypi/pykml, http://www.kfilimon.com/knowledgebase/39-programming/61-kmlmodule.html, http: //code.google.com/p/simplekml/ –

+0

@Jakob Bowyer - C'est du xml ... Je ne sais vraiment que du python, du basic (picaxe pour la robotique), du html basique. J'ai d'abord essayé d'apprendre du xml pour le faire, mais certains des exemples pour modifier les docs xml étaient en script java, que j'ai très peu compris. Et je ne comprenais vraiment pas domxml ou quoi que ce soit. Je n'ai jamais entendu parler de lxml. Je vais regarder maintenant. – renosis

Répondre

0

Je suppose la raison pour laquelle votre ligne if line == "<name>TO-101</name>" ne fonctionne pas est parce qu'il a probablement précédent des espaces il. Si vous l'avez changé à line.strip() == ... alors cela fonctionnerait probablement.

Votre meilleur pari serait d'implémenter un gestionnaire XML pour lire dans le fichier existant, l'analyser et ajouter la nouvelle section. Commencez peut-être avec xml.sax

+1

Commencer avec SAX est probablement une mauvaise idée. SAX est un système de niveau inférieur pour écrire des parseurs XML. Pour la plupart des besoins, il vaut mieux utiliser un analyseur existant comme lxml. –

+0

Bon à savoir! Je connaissais seulement 'xml.sax' et' xml.dom', qui sont parfois fastidieux pour des tâches simples. –

Questions connexes