Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 15/11/2010, à 18:11

kikislater

[Python] Parser un fichier puis Traitement ligne par ligne

Bonjour,

Il faut le reconnaître, je suis assez nul en python ! Voilà, j'ai commencé un petit programme qui sur la base d'un autre batchera un fichier pour obtenir le résultat.

Pour info, le voici :

#!/usr/bin/env python
# -*- coding: utf-8 -*-

#-------------------------------------------------------------
#   Name : Batch Reverse Geocode
#    begin : 15 nov 2010
#    Source of reverse geocode : http://code.google.com/p/geopy/wiki/ReverseGeocoding
#
#   Batch Reverse Geocode is free software and is offered without guarantee
#   or warranty. You can redistribute it and/or modify it
#   under the terms of version 2 of the GNU General Public
#   License (GPL v2) as published by the Free Software
#   Foundation (www.gnu.org).
#------------------------------------------------------------

# Import des module
from geopy import geocoders
import csv
import time
import urllib
import os.path
import operator

# Google Map API key
g = geocoders.Google('CléGoogleMapsAPI')

# Parser CSV
#csvfile = csv.reader(open(raw_input("Entrez le chemin du fichier CSV")))
#for latitude, longitude, name in csvfile:
#    dicts.append({'latitude': latitude, 'longitude' : longitude, 'name' : name})

longitude = raw_input("Saisissez la latitude : ")
latitude = raw_input("Saisissez la longitude : ")
point = (latitude, longitude)
(place, new_point) = g.reverse(point)
result = place, ";" ,latitude,";" , longitude
print result

fileout = open ('reverse_geocoding.txt', 'w')
for i in result:
    fileout.write(i)
fileout.close()

Au final, je souhaiterais parser un fichier. Il me semble avoir compris ça même si ce n'est pas présent dans le fichier !
Mais je souhaiterais surtout lire les colonnes latitude et longitude de chaque fichier pour pouvoir exécuter la fonction et produire un fichier .... (les raw_input n'auront bien entendu plus leur place !
Pour la CléGoogleMapsAPI, il faut s'en procurer une en s'enregistrant sur le site de l'api google ...

Pourriez-vous m'éclairer svp ? Faut-il que je fasse une boucle dans un dictionnaire pour aggréger mes résultats ?

Merci

Dernière modification par kikislater (Le 15/11/2010, à 18:16)

Hors ligne

#2 Le 15/11/2010, à 19:01

kikislater

Re : [Python] Parser un fichier puis Traitement ligne par ligne

Un début d'amélioration déjà :

result = place, ";" ,latitude,";" , longitude, '\n'
print result,

fileout = open ('reverse_geocoding.txt', 'a')

Je crois avoir trouvé pour parser ligne par ligne, donc ce sera bon j'espère !

Hors ligne

#3 Le 16/11/2010, à 11:24

jde3

Re : [Python] Parser un fichier puis Traitement ligne par ligne

Pour lire un fichier ligne par ligne, jette un oeil à la fonction readlines. Pour découper chaque ligne, tu peux utiliser split.

Un exemple :

fp = open (input_file, "r") 
for l in fp.readlines ():
  list_values = l.split ()
  long = list_values[0]
  lat = list_values[1]

ici, la longitude est stockée dans la première colonne du fichier et la latitude dans la deuxième.

Hors ligne