Есть ли способ воспроизвести этот код без цикла for - PullRequest
0 голосов
/ 04 августа 2020

Это код, из которого я хочу удалить forl oop, поскольку он уже будет внутри al oop.

    proxy_file = []
    proxies = open("Proxies.txt", 'r').read().splitlines()
    for line in proxies:
        if len(line.split(':'))==4:
            ip = (line.split(':')[0])
            port = (line.split(':')[1])
            username = (line.split(':')[2])
            password = (line.split(':')[3])
            fullproxy = ('{}:{}@{}:{}'.format(usernamepassword,ip,port))
            proxy_list.append(fullproxy)
            if len(proxy_file) > 0:
                PROXY = random.choice(proxy_file)
                proxy_file.remove(PROXY)

Ответы [ 2 ]

0 голосов
/ 07 августа 2020
proxyfile = open("proxies.txt", 'r')
    for i in range(20):
        line = proxyfile.readline()[:-1]
        splitLine = line.split(':')
        line = proxyfile.readline()[:-1]
        ip = (line.split(':')[0])
        port = (line.split(':')[1])
        user = (line.split(':')[2])
        ippw = (line.split(':')[3])
        httpline = ('{}:{}@{}:{}'.format(user,ippw,ip,port))
        print(ip+':'+port+user)
        time.sleep((1))
0 голосов
/ 05 августа 2020

Честно говоря, я не знаю, что вы пытаетесь делать со списком прокси, но я бы прочитал его только один раз, используя for -l oop

proxies = []

proxy_file = open("proxies.txt")

for line in proxy_file:
    parts = line.strip().split(':')
    if len(parts) == 4:
        ip, port, username, password = parts
        proxy = '{}:{}@{}:{}'.format(username, password, ip, port)
        proxies.append(proxy)
        
proxy_file.close()

# --- after reading proxies ---

# ... rest of code ...

, а позже я бы использовал список proxies без помещения всего кода в другой for -l oop и без удаления элементов из списка proxies, но с перемещением элемента в конец списка.

# --- after reading proxies ---

random.shuffle(proxies)  # items in random order - it doesn't return new list but it changes original list

for url in all_urls:

    # get first on list
    PROXY = proxies.pop(0)

    # move to the end
    proxies.append(PROXY)
    
    requests.get(..., proxy=PROXY)

И вы хотите удалить элементы из list, а затем снова используйте тот же список, тогда вы должны продублировать список.

proxies_temp = proxies.copy()

и использовать этот proxies_temp

# --- after reading proxies ---

# first use

proxies_temp = proxies.copy()

for url in all_urls:

    if proxies_temp:
        PROXY = random.choice(proxies_temp)
        proxies_temp.remove(PROXY)
    
        requests.get(..., proxy=PROXY)

# second use

proxies_temp = proxies.copy()

for url in all_urls:

    if proxies_temp:
        PROXY = random.choice(proxies_temp)
        proxies_temp.remove(PROXY)
    
        requests.get(..., proxy=PROXY)
...