2014-05-22 5 views
-3

저는 폴더에 파일을 열고, 목록에 새 줄을 추가하고 중복 목록을 확인하는 프로그램을 작성하기로 계약했습니다 (원본 목록 집합 (file_contents) 새로운 항목이 추가 될 때마다).구문 목록을 반복하는 동안 오류가 발생했습니다.

sort() 메소드의 목적은 full_file_paths 목록에 포함 된 모든 파일을 열고 그 내용을 목록에 저장하는 것입니다. 내가 예약어을 고려하여 배열의 이름을 변경 시도

def sort(directory): 
    full_file_paths = get_filepaths(directory) 
    # Go file by file 
    for path in full_file_paths: 
     with open(path, "r") as current_file: 
      L = current_file.read().splitlines() 
      print (str("Reading " + path) 
      for entry in L: 
       file_contents.append(entry.strip()) 
     # Creates a set from the array, which cannot contain duplicates. 
     file_contents = list(set(file_contents)) 

및 :

File "line_sort.py", line 24 
    for entry in L: 
       ^
SyntaxError: invalid syntax 

문제의 방법은 다음과 같다 : 그러나, 나는 (아래) 오류 메시지가 표시됨 필자는 파일을 열지 않고 목록을 반복하려고 시도했으며 작동합니다.
오류의 원인이되는 행은이 메소드의 맨 아래에서 4 번째 행입니다. 나는이 문제를 잡으려고하면서 다음을 위해 이것과 함께 비웃을 것이다.

감사합니다.

:

당신은 이전의 줄에 괄호를 폐쇄하지 않은

답변

1
: 보이는 때문에 path 너무 str 유형처럼 참고

print (str("Reading " + path)) 
          ^

, 당신은 모든 str()를 호출 할 필요는 없다 @alecxe 말했듯이

print("Reading " + path) 
+0

저것보세요. 이 프로그램은 지금 내가 원하는 것을 정확하게합니다. 시간 낭비에 사과드립니다. –

0

, 당신은 괄호를 잊어 버렸습니다 ...하지만 난 오히려 당신이 괄호피하기 위해 잊었 말할 것입니다 :

,
print (str("Reading " + path)) 
    ^     ^

이 괄호가 아닌 기능 (the doc 참조) 인쇄로 쓸모가 있습니다. @Fred가 지적했듯이 이것은 파이썬 버전 <에 적용됩니다.

여기서도 get_filepaths 함수가 표시되지 않지만 반환되는 반복 가능한 경로 집합이 줄 바꿈되어야하는지 확실하지 않으면 경로 변수 만. 그래서 간단히 다음과 같이 쓸 수 있습니다 :

print "Reading " + str(path) 
+0

이것이 파이썬 3이 아니라면 –

+0

@FredLarson, 좋은 점 –

+0

나는 실제로 괄호를 잊어 버렸다. 그리고 버전 3.3.2를 사용하고 있으므로 인쇄 기능에서 괄호가 필요합니다. –

관련 문제