Проблема с Python: открытие и закрытие файла возвращает синтаксическую ошибку

1

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

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

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()
  • 2
    Смешанные табуляции и пробелы?
  • 0
    f.close() в вашем коде не в строке 42. Будьте точны.
Показать ещё 1 комментарий
Теги:
syntax

3 ответа

1
Лучший ответ

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

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

  • 0
    да, я проверил все пробелы. F.close и f open находятся на одном уровне отступа! В чем еще может быть проблема? :(
  • 2
    Когда я SyntaxError , SyntaxError ваш код в файл и запускаю его с Python 2.6 в Windows, SyntaxError не генерируется. Как вы управляете этим?
0

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

0

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню