2011-08-28 2 views
3

Попытка изучить некоторый геопространственный питон. Более или менее соответствует примечаниям класса here.Недействительный синтаксис Python с использованием file.write

My Code

#!/usr/bin/python 

# import modules 
import ogr, sys, os 

# set working dir 
os.chdir('/home/jacques/misc/pythongis/data') 

# create the text file we're writing to 
file = open('data_export.txt', 'w') 

# import the required driver for .shp 
driver = ogr.GetDriverByName('ESRI Shapefile') 

# open the datasource 
data = driver.Open('road_surveys.shp', 1) 
if data is None: 
    print 'Error, could not locate file' 
    sys.exit(1) 

# grab the datalayer 
layer = data.GetLayer() 

# loop through the features 
feature = layer.GetNextFeature() 
while feature: 

    # acquire attributes 
    id = feature.GetFieldAsString('Site_Id') 
    date = feature.GetFieldAsString('Date') 

    # get coordinates 
    geometry = feature.GetGeometryRef() 
    x = str(geometry.GetX()) 
    y = str(geometry.GetY() 

    # write to the file 
    file.Write(id + ' ' + x + ' ' + y + ' ' + cover + '\n') 

    # remove the current feature, and get a new one 
    feature.Destroy() 
    feature = layer.GetNextFeature() 

# close the data source 
datasource.Destroy() 
file.close() 

Running, что дает мне следующее:

File "shape_summary.py", line 38 
    file.write(id + ' ' + x + ' ' + y + ' ' + cover + '\n') 
    ^
SyntaxError: invalid syntax 

Запуск Python 2.7.1

Любая помощь будет фантастическим!

+0

@eyquem - как 'file', так и' id' широко используются в стандартной библиотеке Python, несмотря на будучи встроенными функциями - они очень полезные и описательные имена. 'file' был удален в Python 3 и обычно не используется даже в Python 2, поэтому очень мало причин его избежать. Кроме того, OP четко понимает английский язык, а также _lingua franca_ Stack Overflow, поэтому, пожалуйста, напишите комментарии на английском языке, чтобы каждый мог их понять. На самом деле не было никаких оснований повторять комментарий Foo Bah на французском языке. – agf

ответ

5

Предыдущая строка отсутствует закрывающая скобка:

y = str(geometry.GetY()) 

Кроме того, просто комментарий в стиле: это хорошая идея, чтобы избежать использования имени переменной file в питоне, потому что на самом деле имеет смысл. Попробуйте открыть новый сеанс python и запустить help(file)

+0

Ух, понял, что это было что-то очевидное. Спасибо. –

-1

1) запись не должна быть в верхнем регистре вашего кода (Python чувствителен к регистру) 2) убедитесь, что id - строка; если в вашем термине не используется str (id), то же самое для «cover» и «x» и «y»

+4

Ни одна из этих вещей не вызовет «SyntaxError», а скорее «AttributeError» или «TypeError». – agf

Смежные вопросы