[python] python3 힘들게 배우기 #5
ex17.파일 managing 대한 더 많은 것.
이번에는 하나의 파일 내용을 읽어 와서 다른 파일에 붙여넣는 작업을 해 보도록 하겠다.
먼저 두 개의 샘플파일 ex17_from.txt
와 ex17_to.txt
를 만들어 두자. 그 후 ex17_from.txt
에는 적당한 내용을 넣어주도록 하자.
다음과 같은 스크립트를 작성한 후, ex17.py
로 저장하자.
from sys import argv
from os.path import exists
script, from_file, to_file = argv
print(f"Opening {from_file} to copy {to_file}.")
from_file_data = open(from_file).read()
print(f"Opened file is {len(from_file_data)} bytes long.")
print(f"Does the output file exist? {exists(to_file)}")
print("If you want continue, hit enter or hit CTRL+C")
input()
print("Coping to output file...")
output_file = open(to_file, 'w')
output_file.write(from_file_data)
print("Done.")
output_file.close()
처음보는 구문들이 나온다.
from os.path import exists
구문을 보자. exists
는 어떤 파일이 있는 경우 True
, 없으면 False
를 반환해 준다.
len(<file>)
의 경우, file의 크기를 byte로 반환해 준다.
어떤 파일을 open()
한 후 script의 마지막에 close()
해주는 것은 좋은 습관이다. 단, line 8과 같이 in-line으로 read()
했을 경우는 닫지 않아도 상관없다. (닫을수가 없다)
아래와 같은 결과를 볼 수 있다.
Opening ex17_from.txt to copy ex17_to.txt.
Opened file is 9 bytes long.
Does the output file exist? True
If you want continue, hit enter or hit CTRL+C
Coping to output file...
Done.
만들어 둔 파일을 확인한 결과, ex17_from.txt
의 내용이ex17_to.txt
로 복사된 것을 확인할 수 있었다.
ex18. 이름. 변수. 코드. 함수!
드디어 function에 대한 내용이 나온다. 코딩의 꽃은 함수지! python에서는 function을 정의할 때 def
이라고 선언한 후(define) 한 칸 띄고 함수의 이름을 넣는다. 이후 ()
괄호를 넣은 후 :
세미컬런으로 다음 줄로 넘어간다. 이후 내용은들은 자동으로 4칸 간격을 두고 적히게 된다. 아래 예시를 보자.
def some_args(*args):
arg1, arg2, arg3 = args
print(f"arg1:{arg1},arg2:{arg2},arg3:{arg3}")
def two_args(arg1, arg2):
print(f"arg1:{arg1},arg2:{arg2}")
def one_arg(arg1):
print(f"arg1:{arg1}")
def no_arg():
print("None taken.")
some_args("one", "two", "three")
two_args("one", "two")
one_arg("one")
no_arg()
4개의 서로 다른 함수들을 작성해 보았다.
첫번째 함수는 sys
에서 import
해서 쓰던 argv
를 unpacking하는 것과 같다. 즉 여기서 args
앞의 *
표시는, 이 함수가 인수를 받을 때 list로 받아서 하나씩 unpacking하라는 것을 의미한다. 이 때 함수 실행 시 정확하게 개수를 맞춰서 입력해야 하는 것에 유의하자.
함수명은 숫자로 시작할 수 없다.
세미컬런 아랫줄부터 반드시 4칸의 여유를 두고 적어야 함을 주의하자. 파이썬은 칸수가 중요하닷..;
결과는 아래와 같다.
arg1:one,arg2:two,arg3:three
arg1:one,arg2:two
arg1:one
None taken.
ex19. 함수와 변수
함수에 변수를 넣는 여러가지 방법이 있다. 다음의 예시를 보자.
def myfunction(a,b):
print(a+b)
#1
myfunction(10,20)
#2
var1 = 30
var2 = 40
myfunction(var1,var2)
#3
myfunction(5+5,10+10)
#4
myfunction(var1+5,var2+10)
#5
uservar1 = input("input a number>:")
uservar2 = input("input a number again>:")
myfunction(int(uservar1), int(uservar2))
다섯 가지 예시를 들었다. 함수에 들어갈 수 있는 인수는 숫자를 직접 넣을 수도 있고, 수식을 넣을 수도 있다. 직접 설정한 변수를 넣을 수도 있으며 상수와 조합한 연산까지 가능하다. 5번째 예시는 유져인풋을 바로 넣을 수도 있음을 보여준다. 위 코드를 실행하면 아래와 같다.
30
70
30
85
input a number>:100
input a number again>:200
300
댓글남기기