2013-06-21 89 views
-1

我目前正在使用PyFITS來處理一些項目。作爲Python 3.3的初學者,我無法弄清楚我得到的兩個錯誤... 1st error ------------------------python/pyfits語法錯誤

import pyfits;\ 
hdulist = pyfits.open('/Users/geo/Desktop/test/casa.fits')\ 
for i in range(1,26) :\ 
     str = hdulist[0].header[i];\ 
     print(str);\ 
     i=i++; 
    File "<ipython-input-41-651183e88e23>", line 3 
    for i in range(1,26) :\ 
    ^
SyntaxError: invalid syntax 

似乎因爲當我做「進口」奇怪,「hdulist = ...」前的「爲」,就像在控制檯3個不同的輸入,而不是1,我沒有得到任何錯誤...

第二個錯誤----------------------- 我嘗試處理我在hdulist [0] .header [i] = None時得到的IndexError。 在我的情況下,對於i = 26或更多,這是正確的。所以我使用除了:

try:\ 
     hdulist[0].header[30]==None\ 
except:\ 
     print("end of headers") 
    File "<ipython-input-28-fe19468a3999>", line 3 
    except:\ 
     ^
SyntaxError: invalid syntax 

我不知道如何解決這個問題,所以如果你有一個想法,並且善待幫助,謝謝! ^^ 地理

+2

爲什麼在每行的末尾加上'\\'? – soon

+0

刪除反斜槓和分號。縮進在Python中很重要,所以請小心你如何縮進。 Python中不存在「我++」(即使在C中,「i = i ++」也是一個可怕的語句)。 – Evert

+0

同樣對於它在FITS標題中的價值也永遠不會是'None'。它只會是可以存儲在FITS標題(字符串,數字或布爾,基本上)中的類型的值。 – Iguananaut

回答

4

那麼,你的語法是錯誤的:

  • 壓痕問題。
  • 每行末尾的反斜槓與縮進混淆在一起並結束您的語句。他們需要離開。
  • 不要以;結束語句,這是Python,而不是C.語句以換行符結尾(同樣,它也會被反斜線轉義)。

然後,

i = i++; 

並沒有太大的意義在任何語言,但是Python甚至沒有一個++運營商和Python並不需要/使用分號結束聲明。

你想

i += 1 

另外,不要使用str作爲變量名,你遮蔽了內置式的方式。

此外,你永遠不想使用光禿禿的except: - 總是捕獲特定的例外。

最後,你真的想和None比較嗎?如果是這樣,使用

hdulist[0].header[30] is None # None is a singleton! 

但所有的一切,它看起來非常像你應該進一步冒險任何之前閱讀基本Python tutorial

+0

謝謝!是的,我已經改變了i ++。 當我在網站上看到「如何在控制檯中編寫多行」幫助時,我看到了「反斜槓的東西」......然後,您如何做多條線,比如當您想寫一個「對於」? – Geo

+0

如果您想要將*應*僅分割爲多行中的一行,則只需要反斜槓。你幾乎不需要在Python中這樣做。閱讀教程,查看示例,在控制檯中試用它們。例如,在範圍(10)中鍵入'for i:',按回車,您將看到提示符「...」,它顯示Python現在正在等待該塊中的下一個命令。輸入四個空格用於縮進,輸入'print(i)',按兩次Enter(告訴Python結束該塊)。完成。 –