0

我想改变我的代码来做同样的结果。我怎样才能以不同的方式做同样的事情?

只是对我感兴趣。

我的意思是“f = open.....到最后。

这是我的代码:

#Source : http://www.wunderground.com/weather/api/d/docs?d=resources/code-samples
import urllib2
import json
import time
import csv
from datetime import datetime#set the time

def get_information(url):
  try:
    wunder_url_obj = urllib2.urlopen(url)
  except:
    print 'Could not open URL'
    return None

  else:
    now = datetime.now()
    current_year = now.year
    current_day = now.day
    current_month = now.month
    current_hour = now.hour
    current_minute = now.minute
    current_second = now.second
    json_string = wunder_url_obj.read()
    parsed_json = json.loads(json_string)
    temp_f = parsed_json['current_observation']['temp_f']
    weather = parsed_json['current_observation']['weather']
    date = str(now.month) + "/" + str(now.day) +  "/" + str(now.year) + " " +     str(now.hour) + ":" + str(now.minute) + ":" + str(now.second)
    now = datetime.now()    
    header = "Datetime,current condition,Temperature,\n" 

    with open('out.csv', 'a') as f:
    if f.tell() == 0:
      f.write(header)

    f.write(','.join([date, str(temp_f), weather]))
    f.write('\n')
    f.close()

get_information(' http://api.wunderground.com/api/8d3b5d3fa03ddb6f/conditions/weather/q/China/Beijing.json ')

这是我的编辑器:

在此处输入图像描述

4

1 回答 1

2

您可以重写open ... close部分如下:

with open('out.csv', 'a') as f:
    f.seek(0, 2) # os.SEEK_END, on Windows file position set to 0 even in append mode.
    if f.tell() == 0:
        f.write(header)
    f.write(','.join([date, str(temp_f), weather]))
    f.write('\n')

file.tell()返回当前文件位置。

于 2013-07-19T07:15:27.193 回答