Python/Anything - Изменить строки из текстового файла, Рандомизировать, Затем сохранить на определенной строке

Это немного странный вопрос, но я разберусь как смогу. Я работаю над написанием сценария с использованием прокси-серверов, но я столкнулся с проблемой автоматизации его части, которая отстой, так как это последняя часть всего, что мне нужно, тогда я готов.

Пример: допустим, у меня есть список из 200 или около того прокси в этом формате, который хранится в файле.txt:

110.138.183.60:8080
110.138.20.67:8080
110.138.208.116:8008
110.138.237.80:3128
110.138.248.17:8080
110.138.248.78:80
110.139.182.234:8080
ect ect ect...

Первая часть этого скрипта - мне нужно их рандомизировать, так что просто смешайте их все в разных порядках, но убедитесь, что все они заканчиваются на одной строке, как и сейчас.

Вторая часть после их рандомизации, а затем взятия первых 99 из рандомизированных прокси и перемещения их в одну строку в этом формате, игнорируя любые прокси после 99-го. (Разделяется на |, без единицы в начале или в конце.)

110.138.183.60:8080|110.138.208.116:8008|110.138.237.80:3128|110.138.248.17:8080|110.138.248.78:80|110.139.182.234:8080|110.138.20.67:8080

Третья часть - мне нужна эта новая строка прокси для редактирования и замены строки в файле. В данный момент строка будет выглядеть примерно так:

user_pref("extensions.proxytool.http_proxies", "129.59.26.40:8909|87.106.143.132:3128|85.17.121.205:9090|88.85.125.78:8080|80.82.150.82:8080");

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

Конечный результат выглядит примерно так:

...
user_pref("extensions.proxytool.clear_cookies_on_new_window", true);
user_pref("extensions.proxytool.firstrun", false);
user_pref("extensions.proxytool.http_proxies", "110.138.183.60:8080|110.138.208.116:8008|110.138.237.80:3128|110.138.248.17:8080|110.138.248.78:80|110.139.182.234:8080|110.138.20.67:8080");
user_pref("extensions.proxytool.proxy_type", "http");
user_pref("extensions.proxytool.referer", "default");
...

Я не спрашивал бы так много, если бы я не был в отчаянии, я буквально на последних волосах моего проекта перед его завершением. Любая помощь очень ценится! Заранее спасибо!

РЕДАКТИРОВАТЬ: сценарий завершен. Кредит идет на помощь Zack Bloom! Мне стало немного лениво, как работает скрипт python, вместо этого я создал файл prefs по умолчанию с пустой строкой прокси, поэтому вне скрипта python файл prefs по умолчанию копируется в мою программу, а затем скрипт python делает это волшебство и заменяет строку "прокси идут сюда" вновь скомпилированным списком. Еще раз спасибо Зак!

from random import sample

with open("C:/Users/USERACCOUNT/test/today.txt") as proxy_file:
    proxies = [proxy.strip() for proxy in proxy_file.readlines()]

    proxies = sample(proxies, min(len(proxies), 99))

    proxy_str = "|".join(proxies)

import fileinput
import sys

def replaceAll(file,searchExp,replaceExp):
    for line in fileinput.input(file, inplace=1):
        if searchExp in line:
            line = line.replace(searchExp,replaceExp)
        sys.stdout.write(line)

replaceAll('C:/Users/USERACCOUNT/test/prefs.js','proxiesgohere',proxy_str)

1 ответ

Решение

Создать список достаточно просто:

from random import sample

with open("proxy_list.txt") as proxy_file:
    proxies = [proxy.strip() for proxy in proxy_file.readlines()]

    proxies = sample(proxies, min(len(proxies), 99))

    proxy_str = "|".join(proxies)

Затем вы должны использовать язык шаблонов (он есть в std lib: http://docs.python.org/library/string.html), чтобы создать выходной файл с включенной строкой.

Другие вопросы по тегам