티스토리 뷰
Python 파일 입출력 예제코드입니다.
Python의 입출력을 통해 아래와 같은 코드들을 작성하였습니다.
- txt 파일을 그대로 읽어 출력하는 가장 기본 코드
- 문서파일의 주석문을 뛰어넘는 코드 및 최소값을 찾는 코드
- 파일에 2개의 숫자를 가지고와서 더하고 출력하는 예제 소스코드를 작성하였습니다.
- 인터넷 주소 URL을 인자로 넘겨주고, 해당 파일을 저장하는 코드
참고한 책 : "Practical programming An Introduction to Computer Science Using Python" 을 참고하였습니다.
파일 입출력 Type
open(File Name, Type)
r |
read mode 읽기 모드 |
w |
write mode 쓰기 모드 |
a |
append mode 내용 추가 모드드 |
|
read mode(Default) 쓰지 않으면 읽기모드드 |
TXT 파일을 그대로 읽어 출력하는 가장 기본 코드
읽어 들일 파일 - list.txt
1
5
64
426
24
21
86
39
9
소스코드
#input_file = open("list.txt", "r") #for line in input_file: # line = line.strip() # print line #input_file.close() import sys def process_file(fileName): input_file = open(fileName, "r") for line in input_file: line = line.strip() print line input_file.close() if __name__ == "__main__": process_file(sys.argv[1])
결과
문서 파일의 주석문을 뛰어넘는 코드 및 최소값을 찾는 코드
읽어 들일 문서는 아래와 같습니다. 아래에서 # 부분을 startswith()함수를 사용하여 #을 찾고 readline() 을 이용해서 첫 번째 숫자를 구합니다. 그리고 아래 출력 물에 보이는 * 부분이 아닐 경우에 최소값을 찾는 함수를 작성합니다.
읽어 들일 파일 - list2.txt
소스코드
import sys def skip_header(r): line = r.readline() line = r.readline() while line.startswith('#'): line = r.readline() return line def smallest_value(r): line = skip_header(r).strip() print line smallest = int(line) for line in r: line = line.strip() if line != '*': value = int(line) if value < smallest: smallest = value return smallest if __name__ == "__main__": input_file = open(sys.argv[1], "r") print smallest_value(input_file) input_file.close()
결과
파일에 2개의 숫자를 가지고와서 더하고 출력하는 예제 소스코드
아래와 같이 2개의 숫자가 라인별로 존재합니다. 가운데에는 뛰어쓰기를 이용하여 저장하였기에 value1, value2 = line.split() 함수를 사용하여 쉽게 값을 구할 수 있습니다. split() 함수는 string.split()으로 사용하게 되면 기본적으로 스페이스, 새로운 라인, tab 등으로 분리하여 값을 리턴해줍니다. 아래와 같은 예제문에서 value1, valeu2 = line.split() 함수를 사용하게 된다면 value1 = 50, value2 = -15 의 값이 자동으로 들어가게 되어 간단하게 value1과 value2의 값을 더 할 수 있습니다. python은 모두 String을 기본으로 사용하기 때문에 float() 함수를 사용하여 문자 치환을 해주어야 합니다. 마지막으로 write() 함수를 사용하여 결과를 저장합니다.
읽어들일 파일 - list3.txt
50 -15
61 33
463 -666
63 16
95 55
-35 -56
-3 32
-62 100
소스코드
import sys def sum(input_file, output_filename): output_file = open(output_filename, 'w') for line in input_file: value1, value2 = line.split() sum = float(value1) + float(value2) new_line = str(value1) + ' + ' + str(value2) + ' = ' + str(sum) + '\n' output_file.write(new_line) output_file.close() if __name__ == "__main__": input_file = open(sys.argv[1], 'r') sum(input_file, sys.argv[2]) input_file.close()
결과화면
아래 화면에서 첫 번째 결과는 첫번째 값과 2번째 값을 더하고, 결과값을 출력한 부분입니다. 하단에는 원본을 보여주는 화면입니다.
인터넷 주소 URL을 인자로 넘겨주고, 해당 파일을 저장하는 코드
파일 입력, 출력 함수를 사용하여 구글 날씨 정보를 urllib의 urlopen을 이용해서 불러와 결과 값을 weather.xml 파일로 저장합니다.
URL 주소
http://www.google.com/ig/api?hl=ko&weather=seoul
소스코드
'''import urllib url = "http://www.google.com/ig/api?hl=en&weather=seoul" web_page = urllib.urlopen(url) for line in web_page: line = line.strip() print line web_page.close() ''' import urllib import sys def file_process(reader): output_file = open('weather.xml', 'w') for line in reader: line = line.strip() output_file.write(line) output_file.close() if __name__ == "__main__": webpage = urllib.urlopen(sys.argv[1]) file_process(webpage) webpage.close()
결과
아래와 같은 결과값을 출력합니다. 위의 URL을 넘겨주고 weather.xml 파일로 저장하였고, 저장결과 값을 아래와 같이 출력하였습니다.
'Programming language' 카테고리의 다른 글
구조체를 파일로 저장, 불러오기 (0) | 2012.06.16 |
---|---|
Python command 명령, os 명령 사용방법 (0) | 2012.06.14 |
MFC에서 Chart를 쉽게 그리는 라이브러리 ChartDirector (25) | 2012.06.12 |
Google-Blockly으로 미로 찾기 짜보기 (2) | 2012.06.04 |
Server와 Client 통신 thread 사용하기 (0) | 2012.06.01 |
댓글