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

Тема в разделе "Другие языки", создана пользователем TrastMan, 16 авг 2011.

Модераторы: Цукер
  1. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    print addr[0] выводит в консоли элементы массива построчно, но перенаправить вывод в фаил не выходит. Либо только первый элемент, либо символы как при проблеме с кодировкой. Все значения числовые.
     
  2. ptax

    ptax

    Регистр.:
    17 дек 2007
    Сообщения:
    156
    Симпатии:
    36
    PHP:

    for i in addr:
        
    f3 open(r'C:\script\rez.txt'"a")
        
    f3.write(i)
        
    f3.close()


     
    TrastMan нравится это.
  3. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Во, спасиб:) Только у меня выходит два переноса после первого значения, а все последующие идут в одну строку. Нужно построчно.
     
  4. ptax

    ptax

    Регистр.:
    17 дек 2007
    Сообщения:
    156
    Симпатии:
    36
    PHP:
    for i in addr:
        
    data '{0}\n'.format(i)
        
    f3 open(r'C:\script\rez.txt'"a")
        
    f3.write(data)
        
    f3.close()  


     
    TrastMan нравится это.
  5. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    А реально писать в файл только униальные значения? Без дублей.
     
  6. ptax

    ptax

    Регистр.:
    17 дек 2007
    Сообщения:
    156
    Симпатии:
    36
    реально если ты перед этим почистишь в дубликаты в массиве.
    выложи кусок своего списка для примера постараюсь помочь.
     
  7. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Список это прокси в формате ip : port
    Код:
    127.0.0.1:80
    127.0.0.2:123
    ...
    127.0.0.N:789
    Есть рабочий вариант с удалением дублей из файла и переписыванием в новый:

    Код:
    #! /usr/bin/env python
    
    input = open('list.txt', 'r')
    output = open('out.txt', 'w')
    linesarray = input.readlines()
    input.close()
    seen = []
    for i in range(len(linesarray)):
        if seen.count(linesarray[i]) == 0:
            seen.append(linesarray[i])
            output.write(linesarray[i])
    
    output.close()
    Но с совмещением незаладилось, а желание упростить код есть.
     
  8. ptax

    ptax

    Регистр.:
    17 дек 2007
    Сообщения:
    156
    Симпатии:
    36
    PHP:
    proxy_open open(r'proxy.txt').read() #открываем и читаем файл
    proxy_list =  proxy_open.split('\n'#создаем список (массив)
    noduplicate_list = list(set(proxy_list)) #удаление дубликатов
    data '\n'.join(noduplicate_list#создаем из списка строки
    f3 open(r'proxy_rez.txt'"a"#открываем файл
    f3.write(data '\n'#записываем данные
    f3.close() #закрываем файл

     
  9. TrastMan

    TrastMan Постоялец

    Регистр.:
    13 ноя 2007
    Сообщения:
    117
    Симпатии:
    4
    Немного не то. Я сначала записываю список в файл:

    Код:
    for i in addr:
        data = '{0}\n'.format(i)
        f3 = open(r'C:\script\rez.txt', "a")
        f3.write(data)
        f3.close()  
    Там уже есть список и к нему добавляются новые прокси, без проверки уникальности.

    Потом снова открываю файл, чекаю дубли и записываю уникальный список уже в новый фаил. Попытка совместить эти действия, т.е. сначала открыть файл с существующим списком, проверить новую порцию проксей на наличие в rez.txt и дописать в конец только уникальные прокси не увенчалась успехом :(
     
  10. ptax

    ptax

    Регистр.:
    17 дек 2007
    Сообщения:
    156
    Симпатии:
    36
    не совсем мне понятна задача. а если открыть два файла, из них создать единый список. проверить на дубликаты и перезаписать файл ?