2010-01-21 7 views
0

J'essaye d'écrire un script Python qui effectuera la même action sur plusieurs bases de données. Il y en a trop pour que je puisse les saisir à la main, alors j'aimerais écrire un script qui les contournera. En ce moment, je suis devenu aussi loin que ce qui suit avant de se retrouver:Boucler les ensembles de données en Python

countylist = ['01001','01002','01003','01004'] 
for item in countylist: 

# Local variables... 
file_1 = "F:\\file1.shp" 
file_2 = "F:\\fileCOUNTYLIST.shp" 
output_2 = "F:\\outputCOUNTYLIST.shp" 

Fondamentalement, je besoin des éléments pour aller là où je l'ai écrit COUNTYLIST (de sorte que le programme appellerait « F: \ file01001.shp » , "F: \ fichier01002.shp", etc). Je n'ai pas trouvé de réponse en ligne. Comment puis-je faire cela?

Merci beaucoup!

+0

"J'ai besoin des éléments pour aller où j'ai écrit COUNTYLIST" Qu'est-ce que cela signifie –

+0

J'ai besoin d'insérer les éléments de la liste où est COUNTYLIST. –

+1

Il semble que votre question concerne plus la mise en forme de chaîne que la mise en boucle sur des éléments, n'est-ce pas? Vous voudrez peut-être réviser le titre si c'est le cas. – JAL

Répondre

1

concaténation simple fera:

for item in countylist: 
    file_2 = 'F:\\file' + item + '.shp' 
    output_2 = 'F:\\output' + item + '.shp' 
0

Que diriez-vous:

countylist = ['01001','01002','01003','01004'] 
for item in countylist: 

    # Local variables... 
    file_1 = "F:\\file1.shp" 
    file_2 = "F:\\file%s.shp" % countylist 
    output_2 = "F:\\output%s.shp" % countylist 
3
countylist = ['01001','01002','01003','01004'] 
file_1 = "F:\\file1.shp" 
for item in countylist: 
    file_2 = "F:\\file%s.shp" % item 
    output_2 = "F:\\output%s.shp" % item 
    # Here, I do my commands that are dependent on 
    # the name of the file changing. 

# Here, outside of the loop, file_2 and output_2 have the last 
# value assigned to them. 
+0

Merci! Et si je veux me référer à file_2 et output_2 plus tard dans le script, je peux simplement écrire file_2 et output_2? –

+0

@Tanya: cela dépend où dans le script vous voulez faire référence à ces variables. – SilentGhost

+0

c'est une commande ArcGIS, si cela dit quelque chose: gp.SpatialJoin_analysis(). Il y a beaucoup d'arguments dans(), y compris les noms de fichiers –

0

Personne ne encore utilisé cette variation, que diriez-vous du format method pour cordes ...

countylist = ['01001','01002','01003','01004'] 
for item in countylist: 
    file_1 = "F:\\file1.shp" 
    file_2 = "F:\\file{0}.shp".format(item) 
    output_2 = "F:\\output{0}.shp".format(item) 

Ce style est m minerai souple, car vous ne pouvez pas utiliser uniquement les arguments numérotés, mais les mots clés aussi comme

file_2="F:\\file{countylist}.shp".format(countylist=item) 

du manuel, « Cette méthode de mise en forme de chaîne est la nouvelle norme en Python 3.0, et doit être préféré à la mise en forme% décrit dans les opérations de formatage de chaîne dans un nouveau code. " donc c'est bon à savoir.

Remarque importante: Je pense que cette méthode n'est disponible que dans Python 2.6 et supérieur!

+1

et la réponse suivante utilisera la méthode '.format' avec des champs auto-indexés. et la réponse après cela autogenerate 'coutylist'! – SilentGhost

Questions connexes