Проблема с Python: открытие и закрытие файла возвращает синтаксическую ошибку - PullRequest
1 голос
/ 18 мая 2011

Привет, ребята, я нашел этот полезный скрипт на python, который позволяет мне получать данные о погоде с сайтаЯ собираюсь создать файл и набор данных.

Что-то не работает.Это возвращает эту ошибку.

File "<stdin>", line 42
     f.close()
     ^
SyntaxError: invalid syntax

Что не так?В этой строке я только закрываю файл!Может ли кто-нибудь помочь мне, пожалуйста?

Это код Python.

import urllib2
from BeautifulSoup import BeautifulSoup
# Create/open a file called wunder.txt (which will be a comma-delimited file)
f = open('wunder-data.txt', 'w')
# Iterate through year, month, and day
for y in range(1980, 2007):
  for m in range(1, 13):
    for d in range(1, 32):
      # Check if leap year
      if y%400 == 0:
        leap = True
      elif y%100 == 0:
        leap = False
      elif y%4 == 0:
        leap = True
      else:
        leap = False
      # Check if already gone through month
      if (m == 2 and leap and d > 29):
        continue
      elif (m == 2 and d > 28):
        continue
      elif (m in [4, 6, 9, 10] and d > 30):
        continue
      # Open wunderground.com url
      url = "http://www.wunderground.com/history/airport/KBUF/"+str(y)+ "/" + str(m) + "/" + str(d) + "/DailyHistory.html"
      page = urllib2.urlopen(url)
      # Get temperature from page
      soup = BeautifulSoup(page)
      dayTemp = soup.body.nobr.b.string
      # Format month for timestamp
      if len(str(m)) < 2:
        mStamp = '0' + str(m)
      else:
        mStamp = str(m)
      # Format day for timestamp
      if len(str(d)) < 2:
        dStamp = '0' + str(d)
      else:
        dStamp = str(d)
      # Build timestamp
      timestamp = str(y) + mStamp + dStamp
      # Write timestamp and temperature to file
      f.write(timestamp + ',' + dayTemp + '\n')
# Done getting data! Close file.
f.close()

Ответы [ 3 ]

3 голосов
/ 18 мая 2011

Похоже, у вас есть проблема с пропусками. Проверьте пробелы в файле - посмотрите, где находятся пробелы и вкладки. Если в файле есть и табуляция, и пробелы, преобразуйте их все в пробелы.

f.close должно быть на том же уровне отступа, что и f = open('wunder-data.txt', 'w')

0 голосов
/ 18 мая 2011

Удаляйте строки в вашем коде, пока синтаксическая ошибка не исчезнет.Тогда вы сможете сузить проблему.

0 голосов
/ 18 мая 2011

Строка с f.close() не является строкой 42, поэтому вы уверены, что этот код выдает ошибку?

Кроме того, Python, похоже, обрабатывает программу, полученную на stdin,это ваше намерение?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...