가장 쉬운 출력 방법 [Python] by 바죠

가장 쉬운 출력 방법 [Python]

파일 내용이 없으면, 즉 파일이 없으면 생성하고 요청받은 문자열을 파일에 적는다.
파일이 존재하면 파일내용의 마지막 줄 다음에 요청받은 문자열를 추가하여 적는다.
세줄을 추가하고 싶을 경우, 리스트에 세개 문자열을 준비한다.

파일이름, 출력할 리스트만 작성하고 실행하는 프로그램 어디에서든지 간편하게 사용할 수 있다. 
파일을 열고 닫고를 신경쓰지 않는다.
통상 언제 파일을 열과 닫을지도 고민거리 중의 하나이다. 많은 경우 그렇다. 프로그램이 클수록 신경써야 할 것 중 하나이다.
하지만, 아래의 함수를 사용하면 열고 닫는 것에 집중할 필요가 전혀 없다. 
파일 이름에만 집중하면 된다.
 
기존 파일에 추가하기 때문에 기존 데이터를 원초적으로 잃어 버리지 않게 된다.

list_of_lines = ['First line', 'Second line', 'Third line']
append_multiple_lines('target00.txt', list_of_lines)

lines_to_append=[]
lines_to_append.append(str(trialobj))
append_multiple_lines('target00.txt', list_of_lines)

출력할 대상을 문자열 형식으로 리스트로 만든다. 추가하고 싶은 파일 이름을 정한다.
출력할 내용을 문자열로 만들어진 리스트를 만들고 파일 이름을 정한다. 곧 바로 함수를 호출한다.
전달받은 함수는 정해진 파일 내용의 제일 뒷부분에 요청받은 정해진 문자열을 추가한다.

append & read access mode   : 'a+' 
append access mode            : 'a'

세줄을 추가하고 싶을 경우, 리스트에서 세개 항목을 문자열로 만들어 준비한다.

list_of_lines = ['First line', 'Second line', 'Third line']
append_multiple_lines('target00.txt', list_of_lines)

f string:

--------------------------------------------------------------------------------------------------------------------
def append_new_line(file_name, text_to_append):
    with open(file_name, "a+") as file_object:
        file_object.seek(0)
        data = file_object.read(100)
        if len(data) > 0:
            file_object.write("n")
        file_object.write(text_to_append)
def append_multiple_lines(file_name, lines_to_append):
    with open(file_name, "a+") as file_object:
        appendEOL = False
        file_object.seek(0)
        data = file_object.read(100)
        if len(data) > 0:
            appendEOL = True
        for line in lines_to_append:
            if appendEOL == True:
                file_object.write("n")
            else:
                appendEOL = True
            file_object.write(line)
--------------------------------------------------------------------------------------------------------------------
파이썬에서 numpy를 사용하지 않는다고 가정하자. numpy를 사용하는 것이 가장 이상적이다. 간결성, 속도 모두 다 그렇다.
하지만, numpy를 사용할 수 없는 상황도 있다. 사실이다. 유료 소프트웨어의 경우, 굉장히 버전이 낮은 파이썬을 사용할 수 있다. 
예를 들어, IronPython을 사용할 수 있다. numpy 사용이 불가능하다. 실제로 이 일이 일어나는 것을 보고 기겁했다.
데이터 리스트를 오름차순으로 정렬한 다음, 인수 리스트을 얻어내는 방법은 아래와 같다.

qlist=[]
for i in range(info.npop):
   qlist.append(info.sobjective[i])
jindx=sorted(range(len(qlist)), key=lambda i: qlist[i])

--------------------------------------------------------------------------------------------------------------------
def merge_sort(unsorted_list):
    if len(unsorted_list) <= 1:
        return unsorted_list
    middle = len(unsorted_list) // 2
    left_list = unsorted_list[:middle]
    right_list = unsorted_list[middle:]
    left_list = merge_sort(left_list)
    right_list = merge_sort(right_list)
    return list(merge(left_list, right_list))
def merge(left_half,right_half):
    res = []
    while len(left_half) != 0 and len(right_half) != 0:
        if left_half[0] < right_half[0]:
            res.append(left_half[0])
            left_half.remove(left_half[0])
        else:
            res.append(right_half[0])
            right_half.remove(right_half[0])
    if len(left_half) == 0:
        res = res + right_half
    else:
        res = res + left_half
    return res
def bubblesort(qlist):
    for iter_num in range(len(qlist)-1,0,-1):
        for idx in range(iter_num):
            if qlist[idx]>qlist[idx+1]:
                temp = qlist[idx]
                qlist[idx] = qlist[idx+1]
                qlist[idx+1] = temp

--------------------------------------------------------------------------------------------------------------------



핑백

덧글

댓글 입력 영역

최근 포토로그