2014-04-27 2 views
2

저는 파일 이름/경로가 함수의 변수 인 함수의 일부로 파일을 열려고 시도하는 초보자입니다. 나는 하나를 썼지 만 비슷한 기능에 오류가있다. 나는이 오류함수 python에서 파일 열기 3

OSError: [Errno 22] Invalid argument: 'C:\Python33\Doc\theboard1.txt'

에게 경로를 받고 있어요

def read_board(board_file): 
    """ (file path) -> list of str 

    Return a board read from open file board_file. 

    >>>read_board('C:\Python33\Doc\theboard1.txt') 
    """ 

    bo_file = open(board_file, 'r') 
    lines = bo_file.readlines() 

    return lines 

하는 (트리플 체크) 내가 읽은 파일을 테스트하는 예를 사용하고 올바른 다음은 기능 코드입니다.

+0

올바른 (구문 적으로) 파이썬 코드를 게시하십시오. 현재 형식이 잘못되어 유효하지 않습니다. – aruisdante

+0

코드를 정리하고 중첩하면 그 의미는 –

답변

2

당신은 백 슬래시를 이스케이프 이중 백 슬래시를 사용해야합니다, 다음이 작동합니다

read_board('C:\\Python33\\Doc\\theboard1.txt') 

을이 그래서 파이썬 취급합니다 문자로 두 번째 \이며로 사용하지 않는다 다음에 나오는 문자를 이스케이프 처리합니다.

+1

입니다. 그래서 경로를 빌드 할 때 항상 "os.path.join'을 사용해야합니다 ... – aruisdante

+0

감사합니다. 다른 사람이 뭐라고 부르는 지 잘 모르겠지만 나는 궤도에있다. –

+0

@sharkysmachine : 더 명시 적으로하기 위해 경로의'\ t '이 tabulator 문자로 변환되었습니다. 백 슬래시가 두 배로되지 않은 원래 문자열을 인쇄 해 봅니다 (그리고 문자열 리터럴이'r'raw string literal''으로 표시되지 않은 경우). – pepr

0

그리고 당신은 내가 일반적으로 os.path.join을 사용하는 것이 좋습니다 싶지만 윈도우 경로가 너무이기 때문에 뇌가 손상 os 모듈

2

을 가져온 후

("C:"+os.sep+"user")

같은 파일 사이 ::

os.sep

사용 가능 어쨌든 많은 도움이되지 않습니다 .¹

O 하나님과 같이 구성 슬래시

open(r'c:\stupid\junk.txt') 

하거나 DOS 나쁜 꿈 척하고 앞으로를 사용합니다 : 북동 방법은 바로 백 슬래시를 해석하지 않습니다 원시 파이썬 문자열을 사용하는 것입니다 얻을 수

open('c:/stupid/junk.txt') 

¹ 독자를위한 운동 : os.path.join('c:', 'junk.dat')는 무엇을 반환합니까? os.path.join ('stupid', 'junk.txt')과 다른 동작입니까? 이게 confusion for a while입니까?