Форум сайта python.su
Задача: запись в файл некой информации, получаемой из Сети. Но при каждом открытии программы необходимо что бы предыдущая информация стиралась и записывалось по новой.
#!/usr/bin/python # coding: utf8 import urllib import sys import string # Получаем файл со списком станций c сервера weather.rap.ucar.edu sock = urllib.urlopen("http://weather.rap.ucar.edu/surface/stations.txt") list = sock.read() sock.close() # Разбиваем текст на отдельные строки lines = list.split('\n') # Перебираем по очереди все строки for line in lines: # Если длина строки 83 символа, то вырезаем из строки нужные значения if len(line) == 83 : # Индекс станции ICAO (отбрасываем пробелы слева и справа) icao = line[20:24].strip() # Если у данной станции есть индекс ICAO, то считываем остальные параметры if len(icao) == 4 : # Широта (градус) lat = float(line[39:41]) + float(line[42:44])/100 # Долгота (градус) lon = float(line[47:50]) + float(line[51:53])/100 # Высота над уровнем моря (м) elev = float(line[55:59]) # Если после широты стоит символ S, то делаем значение широты отрицательным if line[44:45] == 'S' : lat = -lat # Если после долготы стоит символ W, то делаем значение долготы отрицательным if line[53:54] == 'W' :[code python][/code] lon = -lon # Записываем только станции, находящиеся от 0 до 60 в.д. и от 30 до 90 с.ш. # if (0 < lon < 60 and 30 < lat < 90) : out = "%s\t%.2f\t%.2f\t%.0f" % (icao, lat, lon, elev) file = open('stations.txt', 'w') file.write(out) file.close() lines
file = open('stations.txt', 'w')
file = open('stations.txt', 'a')
Отредактировано Tenebras (Окт. 15, 2016 18:05:21)
Офлайн
ну в вашем коде так и должно быть.
file = open('stations.txt', 'w') file.write(out) file.close()
#example f = open('file.txt) for line in lines: f.write(line) f.close()
Отредактировано vic57 (Окт. 15, 2016 19:01:39)
Офлайн
vic57
ну в вашем коде так и должно быть.
Отредактировано Tenebras (Окт. 15, 2016 19:01:19)
Офлайн
file = open('stations.txt', 'w') for line in lines: # Если длина строки 83 символа, то вырезаем из строки нужные значения if len(line) == 83 : ...... file.write(out) file.close()
Офлайн
Tenebrasключевые слова python лучше не использовать
list = sock.read()
lst = sock.read()
Tenebrasперевода строки нет
file.write(out)
f=open('stations.txt','w'] #..... f.write(out + '\n')
Отредактировано vic57 (Окт. 15, 2016 22:59:19)
Офлайн
Поскольку open в Питоне возвращает контекст менеджер, лучше этим воспользоваться:
with open('yourfile.txt', 'w') as f: # do some operations.... f.write etc..
Отредактировано scidam (Окт. 22, 2016 06:16:16)
Офлайн