파이썬 목록 형식 오류는 'INT'객체는

2014-10-20 2 views
0

내가 파이썬에서이 코드를 만들어 반복 가능한 것이 아니라, 그것은 내가 파이썬파이썬 목록 형식 오류는 'INT'객체는

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의 수를 줄이 스크립트는 PHOT 계산되는 그것의 progs/전화 사용자는 각 전화 번호를 부여합니다 스크립트는 첫 번째 번호를 가져 와서 폴더의 사진 파일 수에 도달 할 때까지 폴더 1 2 3의 텍스트 파일 "phone.txt"에 쓰고 그 다음 번호로 이동하여 다음 수로 계속 씁니다 폴더 ... 등

, 당신이 각이 목록에 int로 인 이상 phNums[i]를 반복하려고

+0

'PhNums [i]의 이름을'for'phNums의 이름으로 변경하십시오 :' – 101

+0

'file.write'는 함수입니다 (기술적으로'write'는'file' 객체의 메소드입니다). 그래서 당신은 'file.write ('some text')'와 같이 호출하여 문자열'some text'를 파일에 씁니다.하지만'file.write = (pho)'는 그 메소드를'pho'에있는 어떤 것으로 바꾸려고 시도합니다.이 경우'int'입니다. 그리고'file' 객체는 당신이 그렇게하지 못하도록 충분히 영리합니다. BTW,'file'을 표준 클래스의 이름이기 때문에 자신의 변수의 이름으로 사용하는 것은 좋지 않습니다. –

답변

0

phNums.append(pho)이 목록 phNums에의 int를 추가하는 코드로 문제가 무엇인지 확인하십시오있는 당신이 할 수 없으며, 왜 당신은 오류가 발생합니다.

그냥 직접 각 요소를 반복 :

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

아니면 코드를 찾고, 당신은 당신의 코드에서 제공되지 않는 이름의 목록을 반복하는 의미가 있습니다.

+0

오류가 발생했지만이 오류가 나타났습니다. TypeError : + = : 'int'및 'str'에 대해 지원되지 않는 피연산자 유형 –

+0

제가 int이므로 문자열로 캐스팅하거나 예제와 같이 str.format을 사용해야합니다. –

0

이것은 이미 충분히 대답 된 간단한 오류입니다. 따라서 직접적인 대답을 제공하는 대신 디버깅 프로세스를 안내해 드리겠습니다. 다행히도 이것은 미래의 시간을 절약 할 것입니다. 좋아, 이제 오류가 무엇

for name in phNums[i]: 

했다 : 오류가 발생한 위치

첫 번째 단계는 확인하는 것입니다?

TypeError: 'int' object is not iterable 

문이 반복됩니다 "를"일반적으로 다음과 같은 반복 가능한 제공하고 있습니다 :

for _item_ in _iterable_ 

이제 우리는 라인의 어느 부분을보고 알고있다. phNums[i]은 어떤 유형입니까? phNums은 이전에 목록으로 정의되어 있지만 phNums[i]으로 정의되어 있으므로 해당 목록에있는 항목의 유형을 찾고 싶습니다. 스크립트가 목록에 추가하는 유일한 시간은 pho을 추가 할 때인 것처럼 보입니다. 이것은 int입니다.

int 항목을 반복 할 때 문제가 발생했습니다. 이 오류는 이제는 의미가 있지만 어떻게 수정해야합니까?

참고 : 추가로 시도했지만 설명이 명확하지 않습니다. 당신은 폴더 구조가되고 싶어 :

phone.txt 각각의 전화 번호를 포함
1/phone.txt 
2/phone.txt 
3/phone.txt 

?

+0

예이 구조는 예를 들어 사용자가 해당 값 (progs = 3, phones = 3, ph1 = 00, ph2 = 01, ph3 = 02)을 입력하면 phot는 3/3 = 1이되므로 스크립트는 ph1을 복사하여 1/phone.txt에 붙여 넣은 다음 ph2를 2/phone.txt에 복사하십시오. 그게 아이디어 야. –

+0

아직도 나에게 의미가 없다. 'phot'가 무엇을 할 작정입니까? 그것은 당신의 코드에서 완전히 사용되지 않습니다. – Landon

+0

다른 문제가 발생할 수 있습니다. 파일을 쓰기 전에 디렉토리를 만들어야합니다.'open'은 디렉토리를 만들지 않고 파일을 열지 않습니다 (디렉토리 생성을 위해'os.mkdir'와'os.makedirs'를보십시오).). 스크립트를 실행하기 전에 모든 디렉토리를 작성한 경우 문제가되지 않을 수도 있습니다. – Landon

관련 문제