파이썬 파일 입출력


파일 입출력 이해가 잘안되네요...]\

infilename = input("입력 파일 이름: ") outfilename = input("출력 파일 이름: ")

infile = open(infilename, "r") outfile = open(outfilename, "w")

s = infile.read()

outfile.write(s)

infile.close() outfile.close()

어디 부분이 잘못된건가요 실행하면 오류가 나옵니이미지

  • 2017년 12월 10일에 작성됨

조회수 111


Banner bitmango

2 답변


import os

path = os.getcwd(); #현재 경로(디렉토리) 저장

full_path = path + '/test.txt' #현재 경로 + 파일명

###################### 파일 쓰기 ##########################

try:
    file1 = open(full_path, mode='w') # mode = 'a' : 이어쓰기  // mode = 'w' : 새로쓰기

    file1.write("안녕하세요") #파일에 쓰기

    file1.close()

except Exception as err:
    print(str(err))

####################### 파일 읽기 #########################

try:
    file1 = open(full_path, mode='r') # mode = 'r' : 읽기

    text = file1.read() #파일에서 읽어서 text변수에 저장

    print(text)

    file1.close()

except Exception as err:
    print(str(err))

open의 첫번째 파라미터에 파일명만 쓰는게 아니라, 전체경로에 파일명을 합쳐서 써줘야합니다

**수정 kei님의 답변대로 파일명만 적어서 open을 호출하는 경우, 현재실행하는 파이썬코드가 있는 폴더에서 open할 파일이 있는지 먼저 확인하고 있으면 열어줍니다. 따라서 절대경로를 쓰더라도 mode를 r로지정하는 경우 해당파일이 그 경로에 반드시 존재해야합니다. 해당파일이 존재하지 않을경우를 대비해 항상 예외처리(try~except)처리를 해줘야합니다.

  • 2017년 12월 11일에 작성됨


일반적으로 파일입출력 함수는 현재 작업 중인 (스크립트 파일이 열린) 위치를 기본값을 가지고 있습니다. 파일을 열기 위해서는 위의 내용처럼 절대값으로 변환하는 방법과 현재 작업할 파일이 소스코드와 동일한 위치에 있도록 하면 됩니다.

  • 2017년 12월 11일에 작성됨

로그인이 필요한 기능입니다.

Hashcode는 개발자들을 위한 무료 QnA사이트 입니다. 작성한 답변에 다른 개발자들이 댓글을 작성하거나 좋아요/싫어요를 할 수 있기 때문에 계정을 필요로 합니다.
► 로그인
► 계정만들기
Close