Как переписать это, используя 2 цикла FOR? - PullRequest
0 голосов
/ 13 января 2011

Вот фрагмент.Как я могу переписать это, чтобы покончить с первым WHILE циклом?

start = 1
end = 4
currentcount = 0
while start < end:

    file = open('C:\Users\Owner\Desktop\\test' + str(start) + '.txt')
    for line in file:    

        f = o.open('http://www.test.com/?userid=' + line.strip())
        f.close()
        time.sleep(10)

        currentcount += 1

    start += 1

Ответы [ 5 ]

2 голосов
/ 13 января 2011

Измените цикл while на:

for i in range(start, end):

Затем используйте i в теле метода.Другие моменты:

  • Использование start в качестве счетчика может привести к путанице.Если вы измените значение start, оно больше не будет началом.
  • Используйте необработанную строку для пути: r'C:\Users\Owner\Desktop\test'
  • Попробуйте использовать str.format для построения строки, а неконкатенация строк.

В Python 2.x xrange может быть несколько более эффективным, чем range, хотя это, вероятно, не является существенной проблемой, учитывая размер используемых чисел.

1 голос
/ 13 января 2011
currentcount = 0  
for i in range(1, 4):      
    file = open('C:\\Users\\Owner\\Desktop\\test' + str(i) + '.txt')      
    for line in file:               
        f = o.open('http://www.test.com/?userid=' + line.strip())          
        f.close()          
        time.sleep(10)            
        currentcount += 1

Вы можете использовать некоторые другие методы итерации / лямбды списка, но это должно быть именно то, что вы ищете, так как он устраняет внешний цикл while и по-прежнему легко читается.

0 голосов
/ 13 января 2011

Мой дубль:

start = 1
end = 4

for count in range(start,end):
    file_name=r'C:\Users\Owner\Desktop\test' + str(count) + '.txt'
    with open(file_name) as file:
        for line in file:    
            with o.open('http://www.test.com/?userid=' + line.strip()) as f:
               pass
            time.sleep(10)
0 голосов
/ 13 января 2011

Немного сложнее, но обрабатывает наиболее вероятные ошибки и продолжает грузить:

import time
import random

ids      = range(4)
infName  = 'c:/Users/Owner/Desktop/test{0}.txt'.format
outfAddr = 'http://www.test.com/?userid={0}'.format
delay    = lambda: time.sleep(random.randint(5,15))

filecount = 0
usercount = 0
for i in ids:
    try:
        with open(infName(i), 'r') as inf:
            filecount += 1
            for line in inf:
                try:
                    with o.open(outfAddr(line.strip())) as outf:
                        usercount += 1
                except IOError:
                    pass
                delay()
    except IOError:
        pass
0 голосов
/ 13 января 2011
currentCount = 0
for start in range(1, 4):
    file = open('C:\\Users\Owner\\Desktop\\test' + str(start) + '.txt')
    for line in file:    

        f = o.open('http://www.test.com/?userid=' + line.strip())
        f.close()
        time.sleep(10)

        currentcount += 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...