[python] python3 힘들게 배우기 #5

4 분 소요

ex17.파일 managing 대한 더 많은 것.

이번에는 하나의 파일 내용을 읽어 와서 다른 파일에 붙여넣는 작업을 해 보도록 하겠다.

먼저 두 개의 샘플파일 ex17_from.txtex17_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

태그:

카테고리:

업데이트:

댓글남기기