2009-12-21 3 views
1

내가 파이썬 초보자 해요 그리고 지금은 저를 빌어 먹을거야 찾을 수 없습니다 :간단한 코드 있지만 오류 (PyS60하지만 특정하지 않음)

L = [] 
file = urllib.urlopen("http://someurl.com/someText.txt") 
line = file.readline() 
while line != "" : 
    L.append(line) 
    line = file.readline() 
appuifw.selection_list(choices=L) 

나는이 오류를 얻을 :

line = file.readline() 
^ 
SyntaxError: invalid syntax 

문제가 무엇인지 아는 사람이 있습니까?

+0

공백이 있습니까? 이전 줄과 같은 구문 오류가 들여 쓰기 된 줄입니까? –

+1

또한 while 루프 대신 'for line in file :'을 수행 할 수 있습니다. –

+1

코드에서 눈에 보이는 오류를 찾을 수는 없지만 while 루프는 사용하지 마십시오. 라인리스트가 필요하다면'file.readlines()'를 사용하면된다.또한 순차 반복이 필요한 경우 for 루프가 필요합니다 (그의 구문과 의미가 C와 다른 경우) –

답변

0

내 파이썬 인터프리터 (2.6.1)에서 잘 작동하는 것 같습니다.

먼저 받아 보셨습니까 import urllib? (즉, NameError 아닌 SyntaxError을 야기하고있는 것은 아닙니다.)

편집 :를 빠른 구글이 발견 : http://discussion.forum.nokia.com/forum/showthread.php?t=150563

그것은 18 개월,하지만 그것은 PyS60 파이썬 2.2.2라고 주장한다. 내 컴퓨터에는 그런 것이 없지만 그게 문제인지를 볼 가치가 있습니다.

+0

예 올바른 모듈을 가져옵니다. – Lincoln

+0

이상한 것. 어쩌면 PyS60은 문자 L로 시작하는 변수 이름을 좋아하지 않을 수도 있습니다. –

0

들여 쓰기에서 탭과 공백을 섞어 쓰지 않는 한 실제로는 문제가 보이지 않습니다.이 경우 오류는 들여 쓰기 수준에 대해 불평해야합니다. 하지만 내가 파일 - 류의 객체의 모든 라인을 읽을 수있는 훨씬 청소기 방법이 지적 거라고 생각 :

f = urllib.urlopen("http://someurl.com/someText.txt") 
lines = f.readlines() 
appuifw.selection_list(choices=lines) 
+0

들여 쓰기에 대해서도 생각했지만 문제는없는 것 같습니다. 라인의 file.readlines =() 라인에 대한 리 에 코드를 변경 한 후 L.append (리튬) 여전히 에러가 루프에서 워드 라인을 가리키는 동일한 오류. 추신 : 그것을 지적 해 주셔서 감사합니다 – Lincoln

+0

작은 경고. readline()은 모든 라인을 메모리에 복사하기 때문에 거대한 파일이나 성능 요구 사항이있는 스크립트의 경우 문제가 될 수 있습니다. "for line in file"은 어떨까요? ( –

+0

원래 코드는 모든 라인을 메모리에 복사하고 있습니다. – DNS

0

당신은 같은 이름의 변수가 당신과 함께 내장 함수 file를 덮어 쓰기한다. 어쩌면 그게 Py60에게 약간의 슬픔을 유발할 수 있을까요?

2

file = urllib.urlopen("http://blabla.com/bla.txt") 
lines1 = file.readlines() 
for li in lines1: 
    L.append(li) 
index = appuifw.selection_list(choices=L) 

에 다시 쓰기 지금 작동하는 것 같다.
(여전히 문제는 남아 있지만 URL이라고 생각합니다)

1

보이지 않는 부분을 표시하십시오. 나는 그 라인 중 하나에 숨어있는 불법 문자 (null은 좋아하는 것입니다)가 화면에 표시되지 않을 것이라고 확신합니다. 또는 파일의 행 끝 유형이 잘못되었을 수도 있습니다. 여기

내 평소 트릭 : 당신에 유래에서 오른쪽을 입력 한 수

1); 이 코드를 소스로 다시 복사 해보고 수정했는지 확인하십시오. 때로는 a) 또는}가 있어야하는 a를 넣는 지보기가 어렵습니다.

2) 모든 행을 주석 처리 한 다음 구문 오류가 다시 나타날 때까지 한 번에 하나씩 주석 처리를 제거하십시오. 다른 모든 행을 주석 처리 할 때 구문 오류가 있으면 실제 문제는 업스트림입니다.

3) 문제의 줄과 그 아래 및 몇 줄을 삭제하십시오. 한 번에이 행을 삭제하십시오. 나쁜 문자가 한 번에 하나씩 삭제 한 두 줄 사이에 있었기 때문에 그 자리에 머물고 싶지 않습니다. 그런 다음 해당 행을 다시 입력하십시오. 다시 붙여 넣지 마십시오. 그 문제를 바로 다시 붙여 넣을 수도 있습니다.

관련 문제