2014-10-20 159 views
0

我在做這個蟒蛇代碼,但它有我希望你能查一下,因爲我在蟒蛇Python列表類型錯誤:「詮釋」對象不是可迭代

for i in range(phones): 
    pho = int(raw_input("Phone Number %d : " % (i+1))) 
    phNums.append(pho) 
    for name in range(phot): 
     name1 = '{0}/phone.txt'.format(pathname) 
     file = open(name1, 'w') 
     file.write = (pho) 
     file.close() 

第一個問題是新的錯誤太多當我運行該腳本我有這個錯誤

Traceback (most recent call last): 
    file.write = (pho) 
AttributeError: 'file' object attribute 'write' is read-only 

腳本應該做這樣的場景: 首先,用戶給Perfixes的數量和progs的的計數 該腳本將計算輻透它的progs的/電話 然後用戶將給每個電話號碼 腳本將採取第一個號碼,並將其寫入文件夾1 2 3的文本文件「phone.txt」,直到達到文件夾的光照計數,然後移動到下一個號碼,並繼續寫入下一個計數文件夾...等

請檢查什麼是用代碼

+0

'在phNums [i]中改名':'爲'名爲phINN:' – 101 2014-10-20 01:01:05

+0

'file.write'是一個函數(技術上,'write'是'file'對象的一個​​方法),所以你稱之爲'file.write('some text')'將字符串'some text'寫入文件。但是'file.write =(pho)'試圖用'pho'中發生的任何事情來代替這個方法,在這種情況下是'int'。而'file'對象足夠聰明,不會讓你這樣做。順便說一句,使用'file'作爲你自己的變量的名字不是一個好主意,因爲它是一個標準類的名字。 – 2014-10-20 02:46:17

回答

0

phNums.append(pho)增加了整數到列表phNums這個問題,你再嘗試通過迭代phNums[i]這是在你的列表中的每個詮釋,你不能做,你爲什麼得到錯誤。

只是遍歷每個元素直接:

for i in phNums: 
    name = '{}phone.txt'.format(i) # i is an int so use str.format to concat 

還是看你的代碼,您可能意味着遍歷是不是在你的代碼中提供的名單。

+0

錯誤已經消失但出現此錯誤TypeError:不支持的操作數類型爲+ =:'int'和'str' – 2014-10-20 01:06:20

+0

我是一個int,因此您必須將其轉換爲字符串或使用str.format,就像我的示例 – 2014-10-20 01:08:54

0

這是一個已經被充分回答的簡單錯誤,所以不是給你一個直接的答案,我想指導你完成我的調試過程。希望這會在未來節省時間。

第一步是檢查哪裏出現了錯誤:

for name in phNums[i]: 

好了,現在究竟是什麼錯誤?

TypeError: 'int' object is not iterable 

的「for」語句將遍歷一個給定的迭代並且通常是這樣的:

for _item_ in _iterable_ 

現在我們知道看該線的一部分。什麼類型是phNums[i]phNums在前面定義爲一個列表,但是phNums[i]我們想要找到該列表中的項目的類型。看起來,腳本添加到列表的唯一時間是追加pho,這是一個int。

有這個問題,你試圖遍歷一個int項目!這個錯誤現在有意義,但我們應該如何解決它?

筆記:我試着走得更遠,但您的描述不清楚。你想要的文件夾結構爲:

1/phone.txt 
2/phone.txt 
3/phone.txt 

其中phone.txt包含每個電話號碼?

+0

是這是結構,例如,如果用戶輸入了這些值(progs = 3,phones = 3,ph 1 = 00,ph2 = 01,ph3 = 02),則phot將爲3/3 = 1,因此腳本會複製ph1並粘貼到1/phone.txt中,然後將ph2複製到2/phone.txt。這就是主意 – 2014-10-20 01:22:21

+0

這對我來說仍然沒有意義。你打算用「phot」做什麼?它在你的代碼中完全沒有用。 – Landon 2014-10-20 01:28:30

+0

你可能遇到的另一個問題是,你需要在寫入文件之前創建目錄,'open'不會創建一個目錄並打開一個文件(有關創建目錄的信息,請參閱「os.mkdir」和「os.makedirs」 )。如果您在運行腳本之前創建了所有目錄,則這可能不是問題。 – Landon 2014-10-20 01:30:01

相關問題