파이썬 파일 입출력

조회수 4575회

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

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

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

s = infile.read()

outfile.write(s)

infile.close() outfile.close()

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

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)처리를 해줘야합니다.

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

    • (•́ ✖ •̀)
      알 수 없는 사용자

답변을 하려면 로그인이 필요합니다.

프로그래머스 커뮤니티는 개발자들을 위한 Q&A 서비스입니다. 로그인해야 답변을 작성하실 수 있습니다.

(ಠ_ಠ)
(ಠ‿ಠ)