파일에 새로운 내용 추가하기(1)

Download Report

Transcript 파일에 새로운 내용 추가하기(1)

Python study
#3
Subject
최종 작성일
python
2012.07.05
작성자
승인일
김병철
승인자
Version History
업데이트일
V0.,1
2012.07.05
주요내용
입출력
1. 함수
입력을 가지고 어떤 일을 수행한 다음에 결과물을 내어놓는 것
파이썬 함수의 구조
def 함수명(입력 인수):
<수행할 문장1>
<수행할 문장2>
Ex )
def sum(a, b):
return a + b
>>> a = sum(3, 4)
>>> print a
7
리턴값이 없는 함수
>>> def sum(a, b):
. . . print "%d, %d의 합은 %d입니다." % (a, b, a+b)
...
>>>
>>> sum(3, 4)
3, 4의 합은 7입니다.
리턴값이 있는지 없는지 알아보는 예
>>> a = sum(3, 4)
>>> print a
None
입력값이 몇 개가 될 지 모를 때는 어떻게 해야 할까?(1)
def 함수이름(*입력변수):
<수행할 문장>
...
변수명 상관없음
>>> def sum_many(*args):
. . . sum = 0
. . . for i in args:
. . . sum = sum + i
. . . return sum
...
>>>
<함수 정의>
>>>
>>>
6
>>>
>>>
55
result = sum_many(1,2,3)
print result
result = sum_many(1,2,3,4,5,6,7,8,9,10)
print result
<함수 사용법>
입력값이 몇 개가 될 지 모를 때는 어떻게 해야 할까?(2)
>>> def sum_mul(choice, *args):
. . . if choice == "sum":
. . . result = 0
. . . for i in args:
. . . result = result + i
. . . elif choice == "mul":
. . . result = 1
. . . for i in args:
. . . result = result * i
. . . return result
...
>>>
>>>
>>>
15
>>>
>>>
120
result = sum_mul('sum', 1,2,3,4,5)
print result
result = sum_mul('mul', 1,2,3,4,5)
print result
.
함수의 리턴값은 언제나 하나다
>>> def sum_and_mul(a,b):
. . . return a+b, a*b
a = sum_and_mul(3,4)
Ps. 에러가 안나다.
a 값 : (7, 12)
a를 두개의 리턴 값으로 받고 싶다면?
>>> sum, mul = sum_and_mul(3, 4)
sum = 7 , mul = 12
입력값에 초기화 설정
초기화 사용 예
def say_myself(name, old, sex=1 ):
print "나의 이름은 %s 입니다." % name
print "나이는 %d살입니다." % old
if sex:
print "남자입니다."
else:
print "여자입니다.“
<함수 사용법>
<함수 정의>
주의 사항
def say_myself(name, sex=1, old):
에러 발생
say_myself("박응용", 27)
say_myself("박응용", 27, 1)
say_myself("박응선", 27, 0)
2.사용자 입력
input의 사용
>>> a = input()
'Life is too short, you need python'
>>> a
Life is too short, you need python
>>> a = input()
3
>>> a
3
>>>
Ps. 문자열일 때는 (')나 (")으로 둘러싸서 입력해야
에러가 나지 않는다. 숫자는 상관없다.
사용자 입력
raw_input의 사용
>>> a = raw_input()
Life is too short, you need python
>>> a
Life is too short, you need python
>>>
*raw_input 으로 입력된 값은 모두
문자열로 취급한다.
raw_input의 사용
>>> number = raw_input("숫자를 입력하세요: “)
숫자를 입력하세요:
* input이나 raw_input이라는 함수에 입력으로 위의 질문을 포함시킬 수가 있다.
print 자세히 알기
print가 하는 일은 자료형을 출력하는
것이다
>>> a = 123
>>> print a
123
>>> a = "Python"
>>> print a
Python
>>> a = [1, 2, 3]
>>> print a
[1, 2, 3]
>>> print "life" "is" "too short" -------- ①
lifeistoo short
>>> print "life"+"is"+"too short" -------②
lifeistoo short
문자열 띄어쓰기는 콤마로
>>> print "life", "is", "too short"
life is too short
한 줄에 출력하기
>>> for i in range(10):
... print i,
...
0123456789
3.파일 입출력
파일 생성하기
파일객체 = open(파일이름, 파일열기모드)
<예>
# file1.py
f = open("새파일.txt", 'w')
파일 열기 모드
f.close()
파일열기모드
설명
r
일기모드 - 파일을 읽기만 할 때 사용
w
쓰기모드 - 파일에 쓸 때 사용
a
추가모드 - 파일의 마지막에 새로운 내용을 추가시킬 때 사용
파일을 쓰기 모드로 열어서 출력값 적기
# file2.py
f = open("새파일.txt", 'w')
for i in range(1, 11):
data = "%d 번째 줄입니다.\n" % i
f.write(data)
f.close()
<소스>
1
2
3
4
5
6
번째
번째
번째
번째
번째
번째
줄입니다.
줄입니다.
줄입니다.
줄입니다.
줄입니다.
줄입니다.
…
…
<출력 결과>
파일을 읽는 여러가지 방법 (1)
첫 번째 방법
readline()을 이용하는 방법 :
파일을 한줄씩 읽는다.
# file2.py
f = open("새파일.txt", 'r')
line = f.readline()
print line
f.close()
모든 라인을 읽고 싶다면
# file3.py
f = open("새파일.txt", 'r')
while 1:
line = f.readline()
if not line: break
print line
f.close()
*if not line: break
이 조건문 뜻은 더 이상 읽은 라인이
없다면 while 문을 빠져 나온다.
파일을 읽는 여러가지 방법 (2)
두 번째 방법
세 번째 방법
readlines()를 이용하는 방법
read()를 이용하는 방법
# file4.py
f = open("새파일.txt", 'r')
lines = f.readlines()
for line in lines:
print line
f.close()
# file5.py
f = open("새파일.txt", 'r')
data = f.read()
print data
f.close()
파일에 새로운 내용 추가하기(1)
‘w’ 모드로 파일을 연 경우에는 이미 존재하는 파일을 열 경우 그 파일의
내용이 모두 사라지게
된다고 했는데 원래 있던 값을 유지하면서 단지 새로운 값만 추가하기를
원할 수도 있다. 이런
경우에는 파일을 추가 모드('a')로 열면 된다.
# file6.py
f = open("새파일.txt",'a')
for i in range(11, 20):
data = "%d번째 줄입니다.\n" % i
f.write(data)
f.close()
”새파일.txt"라는 파일이 원래 가지고 있
던 내용 바로 다음에 결과값을 적기 시
작한다.
파일에 새로운 내용 추가하기(2)
tell과 seek
파일객체 관련 함수로 ‘tell’과 ‘seek’도 빼놓을 수 없다. ‘tell’은 지금
현재 파일 포인터의 위치를 반환하고, seek은 지정하는 곳으로 포인터의 위치를
변화시킬 수 있는 파일객체 관련 함수이다. 파일 포인터란 파일의 현재 위치를
가리키는 말이다.
this is one line
two line
three line
<파일 내용>
>>> f = open("test.txt", 'r')
>>> f.tell()
0
>>> f.readline()
'this is one line\n'
>>> f.tell()
18
>>> f.seek(0)
>>> f.readline()
'this is one line\n'
>>>
파일에 새로운 내용 추가하기(3)
1) sys모듈 입력
명령행(도스창)에서 입력인수를 직접 주어서
프로그램을 실행시키는 방식이다
#sys1.py
import sys
args = sys.argv[1:]
for i in args:
print i
결과값:
aaa
bbb
ccc
위의 프로그램을 C:\Python이란 디렉토리에 저장하고 윈도우즈 도스창을
열고 다음과 같이 입력해
보자.
C:\Python>python sys1.py aaa bbb ccc
argv[0]
Argv[1]
Argv[2]
Argv[3]