June is Combung

게시판 본문

python/파일

게시판

june__Park 2021. 3. 1. 01:22
import os

board_list = []
count = 0         # 전체 게시글 수
page_size = 3     # 한 페이지에 보여줄 게시글 수
cur_page_num = 1  # 현재 페이지 번호
page_count = 1    # 전체 페이지 수
start_row = 0     # 현재 페이지의 게시글 시작번호
end_row = 0       # 현재 페이지의 게시글 마지막번호
title_cnt = 0
log = -1
size = len(board_list)
cur_ge_num = 0 # 현재 게시판 번호
ge_page_cnt = 0 # 전체 게시판 페이지 수

user = [] # 회원정보
contents = [] # 총게시글

front = [] # 수식어 나열
back = [] # 명사 나열 

file_name = "board1.txt"

while True:
    print("user: ",user)
    print("contents",contents)
    print("[게시판]")
    print("total : ",count)
    print("----------------")
    for i in range(5):
        ge_idx = cur_ge_num*5 + i
        print("[%d] %s"%((i+1)%6,board_list[ge_idx][0]))
    print("----------------")

    if log == -1:
        print("[1] 로그인")
        print("[2] 회원가입")
        print("[3] 다   음")
        print("[4] 이   전")
        print("[0] 종   료")
        sel = int(input("입력: "))

        if sel == 1:
            user_id = input("아이디: ")
            user_pw = input("비밀번호: ")
            cnt = 0
            for i in range(len(user)):
                if user[i][1] == user_id and user[i][2] == user_pw:
                    print("%s님, 환영합니다."%(user[i][0]))
                    log = i
                    cnt = 1
                    break
            if cnt == 0:
                print("아이디 혹은 비밀번호 오류입니다.")
            
        elif sel == 2:
            name = input("이름: ")
            user_id = input("사용할 아이디: ")
            cnt = 0
            idx = len(user)
            user.append(['']*3)
            for i in range(idx):
                if user[i][1] == user_id:
                    print("중복입니다.")
                    cnt = 1
                    del(user[idx])
                    break
            if cnt == 1:
                continue
            user_pw = input("사용할 비밀번호: ")
            user[idx][0] = name
            user[idx][1] = user_id
            user[idx][2] = user_pw
            print("회원가입 완료.\n%s님, 환영합니다."%(user[idx][0]))
        elif sel == 3:
            if cur_page_num == page_count:
                print("이후 페이지가 존재하지 않습니다.")
                continue
            cur_page_num += 1
        elif sel == 4:
            if cur_page_num == 1:
                print("이전 페이지가 존재하지 않습니다.")
                continue
            cur_page_num -= 1
        else:
            print("종료합니다.")
            break

    if log != -1:
        print("[1] 로그아웃")
        print("[2] 글 쓰기")
        print("[3] 글 수정")
        print("[4] 글 삭제")
        print("[5] 내용보기")
        print("[0] 종   료")
        sel2 = int(input("입력: "))

        if sel == 1:
            log = -1
            print("로그아웃 완료")
            
        elif sel == 2:
            board_list.append(['']*2)
            title = input("추가할 제목을 입력하세요: ")
            board_list[title_cnt][0] = title
            
            content = input("게시글 내용 입력: ")
            board_list[title_cnt][1] = content
            count += 1

            while True:
                print("[1] 수식어 해시태그 추가")
                print("[2] 명사 해시태그 추가")
                print("[3] 해시태그 추가 안 함")
                ht = int(input(": "))
                if ht == 1:
                    f = input("입력(뒤로가기는 ba): ")
                    if f == ba:
                        continue 
                    front.append(f)
                elif ht == 2:
                    b = input("입력(뒤로가기는 ba): ")
                    if b == ba:
                        continue 
                    back.append(b)
                else:
                    break
                
            print(board_list)
            title_cnt = len(board_list)

            f = open(file_name,"wt")
            data = ""
            for i in range(len(board_list)):
                data += (board_list[i][0] + ":" + board_list[i][1] + "\n")
            f.write(data)
            f.close()
            
            if os.path.exists(file_name):
                f = open(file_name,"rt")
                data = f.read()
                f.close()
                tmp = data.split("\n")
                for i in range(len(tmp)-1):
                    temp = tmp[i].split(":")
                    board_list[i][0] = temp[0]
                    board_list[i][1] = temp[1]
                print("[data]")
                print(board_list)
                print("파일 불러오기 성공.")
            else:
                print("파일이 존재하지 않습니다") 
            
        elif sel == 3:
            print(board_list)
            idx = int(input("수정할 게시글의 인덱스를 입력하세요: "))
            content = input("
        elif sel == 4:
            print(board_list)
            idx = int(input("삭제할 게시글의 인덱스를 입력하세요: "))
            if idx > cur_page_num*3-1 or idx < cur_page_num-1:
                print("현재 페이지에 있는 게시글만 삭제할 수 있습니다.")
                continue
            del(board_list[title_idx])
            count -= 1
            print("삭제완료.")
            
            f = open(file_name,"wt")
            data = ""
            for i in range(len(board_list)):
                data += (board_list[i][0] + ":" + board_list[i][1] + "\n")
            f.write(data)
            f.close()
            
            if os.path.exists(file_name):
                f = open(file_name,"rt")
                data = f.read()
                f.close()
                tmp = data.split("\n")
                for i in range(len(tmp)-1):
                    temp = tmp[i].split(":")
                    board_list[i][0] = temp[0]
                    board_list[i][1] = temp[1]
                print("[data]")
                print(board_list)
                print("파일 불러오기 성공.")
            else:
                print("파일이 존재하지 않습니다")

        elif sel == 5:
            print("total : ",count)
            print("[page %d/%d]"%(cur_page_num,page_count))
            i = start_row
            while i <= end_row:
                if i == count:
                    break
                print(board_list[i])
                i += 1
            
        else:
            print("종료합니다.")
            break

'python > 파일' 카테고리의 다른 글

파일 컨트롤러[3단계] : 장바구니  (0) 2021.03.01
파일 컨트롤러[2단계] : ATM  (0) 2021.03.01
파일 컨트롤러[1단계] : 리스트  (0) 2021.03.01
파일 읽기 : 연습문제  (0) 2021.03.01
파일 쓰기 : 연습문제2  (0) 2021.03.01
Comments