Цикл по наборам данных в Python - PullRequest
0 голосов
/ 21 января 2010

Я пытаюсь написать скрипт 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"

По сути, мне нужно, чтобы элементы шли туда, где я написал COUNTYLIST (чтобы программа вызывала «F: \ file01001.shp», «F: \ file01002.shp» и т. Д.). Я не мог найти ответ в Интернете. Как мне это сделать?

Большое спасибо!

Ответы [ 4 ]

3 голосов
/ 21 января 2010
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.
1 голос
/ 21 января 2010

Простая конкатенация сделает:

for item in countylist:
   file_2 = 'F:\\file' + item + '.shp'
   output_2 = 'F:\\output' + item + '.shp'
0 голосов
/ 21 января 2010

Никто еще не использовал этот вариант, как насчет метода формата для строк ...

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)

Этот стиль более гибкий, поскольку вы можете использовать не только пронумерованные аргументы, но и такие ключевые слова, как

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

из руководства: «Этот метод форматирования строки является новым стандартом в Python 3.0, и ему следует отдавать предпочтение форматированию%, описанному в Операциях форматирования строки в новом коде». так что приятно знать.

Важное замечание: я думаю, что этот метод доступен только в Python 2.6 и выше!

0 голосов
/ 21 января 2010

Как насчет:

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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...