[Python] Перенаправить вывод в файл

Файл желательно только один. Скрипт работает по крону и добавляет после каждой отработки в файл новые прокси, но дубли в настоящий момент не чекает. Этот код добавляет новую порцию проксей в конец файла:
Код:
for i in addr:
    data = '{0}\n'.format(i)
    f3 = open(r'C:\script\rez.txt', "a")
    f3.write(data)
    f3.close()
Т.е. в rez.txt раздувается список с кучей дублей. Задача открыть файл и записать только те прокси, которых нет в rez.txt.
 
В чем проблема. Объединяешь два списка чистишь от дубле и перезаписуешь файл с проксями

PHP:
list_file_proxy = ['1','2','3']
list_new_proxy = ['1','4','5']
all_proxy_list = list_file_proxy + list_new_proxy

noduplicate_list = list(set(all_proxy_list))
data = '\n'.join(noduplicate_list) 
f3 = open(r'proxy_rez.txt', "w")
f3.write(data + '\n') 
f3.close()
 
А реально извернуться так:
открыть файл, проверить на дубли и записть результат в исходный файл заменив им старый неуникальный список?
 
А реально извернуться так:
открыть файл, проверить на дубли и записть результат в исходный файл заменив им старый неуникальный список?
Тот код который я представил выше примерно это и делает.
Суть в том что у тебя есть два типа данных.
1) Это уже существующий файл с проксями.
2) Это новые прокси.
Так вот ты делаешь два списка объединяешь их в один список.
Чистишь этот список от дубликатов. И просто обновляешь файл.
 
Тут непонятно что значит:
Код:
list_file_proxy = ['1','2','3']
list_new_proxy = ['1','4','5']
Не нашел в гугле аналогов.
У меня пока:
Код:
    list_file_proxy = ['1','2','3']
                  ^
IndentationError: expected an indented block
Нужно открыть исходный файл, и присвоить его содержимое "list_file_proxy"?
 
Код:
    list_file_proxy = ['1','2','3']
                  ^
IndentationError: expected an indented block
Это у тебя ошибка синтаксиса где то поставил не там пробел


PHP:
proxy_open = open(r'proxy.txt').read() #открываем и читаем файл  в файле строки (1 2 3)
list_file_proxy =  proxy_open.split('\n') #создаем список (массив) 
print list_file_proxy
	>>['1','2','3']

Так моя мысль поянтна ?
 
Ага, более - менее.
Код:
for proxy in proxies:
    list_new_proxy = '{0}\n'.format(proxy)
    proxy_open = open(r'socks5.txt').read()
    list_file_proxy =  proxy_open.split('\n')
    all_proxy_list = list_file_proxy + list_new_proxy
    noduplicate_list = list(set(all_proxy_list))
    data = '\n'.join(noduplicate_list)  
    f3 = open(r'socks5.txt', "a")
    f3.write(data + '\n')
    f3.close()
выдает:
Код:
    all_proxy_list = list_file_proxy + list_new_proxy
TypeError: can only concatenate list (not "str") to list
 
PHP:
list_new_proxy = proxies
proxy_open = open(r'socks5.txt').read()
list_file_proxy =  proxy_open.split('\n')
all_proxy_list = list_file_proxy + list_new_proxy
noduplicate_list = list(set(all_proxy_list))
data = '\n'.join(noduplicate_list)  
f3 = open(r'socks5.txt', "a")
f3.write(data + '\n')
f3.close()
proxies проверь у себя эту переменную это список или нет.
ptint type(proxies)
 
Пришлось написать вместо "proxies" - "proxies[1]"
proxies[1] - <type 'tuple'>
Вот такой вариант:
Код:
for proxy in proxies: # запись в файл
    list_new_proxy = list(set(proxies[1]))
    proxy_open = open(r'socks5.txt').read()
    list_file_proxy =  proxy_open.split('\n')
    all_proxy_list = list_file_proxy + list_new_proxy
    noduplicate_list = list(set(all_proxy_list))
    data = '\n'.join(noduplicate_list)  
    f3 = open(r'socks5.txt', "a")
    f3.write(data + '\n')
    f3.close()
пишет в socks5.txt совсем не то, что нужно:

А
Код:
for proxy in proxies:
    data = '{0}\n'.format(proxy[1])
    f3 = open(r'socks5.txt', "a")
    f3.write(data)
    f3.close()
Нормально дописывает новые прокси в конец файла, не проверяя на уникальность.
 
Зачем тебе цикл for ? попробуй тот код который я давал.
 
Назад
Сверху