Форум сайта python.su
Добрый день. Читаю файл построчно, потом вывожу так:
print 'Proxy {} on port {} is VALID. Testing time -{} '.format(addr,port,res_time)
Proxy 209.203.29.66 on port 8080
is VALID. Testing time -3
Офлайн
Откуда берёте port?
Попробуйде отрезать последний символ:
print 'Proxy {} on port {} is VALID. Testing time -{} '.format(addr, str(port)[:-1], res_time)
Офлайн
К сожалению не помогло. вырезка кода:
file = open(proxy_list,'rb').readlines()
goodfile = open(good_list,'wb')
real_ip = get_ip()
for line in file:
try:
addr,port=line.split(':') # вот от сюда беру port
209.203.29.66:8080
123.123.1.1:334
201.76.190.251:3128
68.83.99.68:8085
72.44.82.43:3128
216.18.21.190:8080
Отредактировано (Янв. 6, 2011 18:38:00)
Офлайн
refreshВ виндах - два. Всмысле не \n - 2 символа, а перевод строки организуется двумя символами.
но почему? ведь \n это один символ
Отредактировано (Янв. 6, 2011 19:07:48)
Офлайн
UsCrименно, а если подробнее, это \r\n
а перевод строки организуется двумя символами.
Офлайн
ага, уже разобрался, спасибо =)
Офлайн
refreshПроблема в том что вы файл в бинарном режиме окрыли, поэтому и мучаетесь с “лишними” символами.
file = open(proxy_list,'rb').readlines()
Офлайн
> Проблема в том что вы файл в бинарном режиме окрыли, поэтому и мучаетесь с “лишними” символами.
Бинарный режим тут ни при чём (2.6.6), так всегда было.
> addr, port = map(str.strip, line.rsplit(':', 1))
..bw
Офлайн
>>> p = r'c:\test.txt'
>>> open(p, 'w').write('1111\n22222\n33333\n')
>>> open(p, 'r').read()
'1111\n22222\n33333\n'
>>> open(p, 'rb').read()
'1111\r\n22222\r\n33333\r\n'
Офлайн
У меня нет возможности под виндой проверить, но в линухе этот флажок на “вырезание” \r не влияет. Т.е. 'r' вместо 'rb' это ни в коем случае не решение обсуждаемой проблемы.
>>> open('/home/bw/tmp/foo.txt', 'r').read()
'123\r\nqwe\r\nasd\r\n'
>>> open('/home/bw/tmp/foo.txt', 'rb').read()
'123\r\nqwe\r\nasd\r\n'
Офлайн