티스토리 뷰

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 파일로 저장하였고, 저장결과 값을 아래와 같이 출력하였습니다.





댓글