본문 바로가기
Python

[파이썬] 기본 네트워크 & 데이터 처리

by AI미남홀란드 2021. 1. 31.
728x90

** 네트워크

1, 용어

-> protocol : 데이터 송수신을 위한 규칙이나 규약

-> TCP : 연결형 통신 - 클라이언트와 서버가 통신을 하기 전에 연결을 하고 서로간에 데이터 송수신 여부를 확인하면서 데이터를 전송

 

client                                              server

             요청 --------------->

             <--------------- 응답

             데이터요청 --------->

             <----------데이터 전송

             데이터 수신 여부 ------>

http , https , ftp ,telnet 등

 

 

-> UDP : 비연결형 통신

송신 --------> 데이터 --------> 수신

전송속도는 빠르지만 수신 측이 데이터를 받았는지 알 수 없습니다.

데이터를 여러 개 전송하였을 때 수신 측이 순서대로 받는다는 보장을 못함

스마트폰의 PUSH 가 전부 이 방식

 

카카오톡이 대표적인 UDP

 

-> IP : 컴퓨터에 할당되는 숫자로 된 주소

IP 중에는 내부 네트워크에서 컴퓨터를 구분하기 위한 가상의 주소도 있습니다.

10 , 192.168 , 172.16. ~ 172.31 의 주소 대역은 가상 주소입니다.

 

-> PORT : 컴퓨터 내에서 프로세스(프로그램)를 구분하기 위한 번호

0 ~ 65535 까지 있으면 0 ~1023 번까지는 예약이 되어 있는 경우가 많습니다.

http: 80 , https : 443

tomcat(8080) , oracle(1521) , mysql(3306) , mongodb(27017) 등

 

-> 다른 컴퓨터와 통신을 할 떄는 IP 와 port 번호가 필요하다.

-> Domain : IP 대신에 사용할 수 있는 문자 주소

-> port 는 서버 설정에따라 기본 포트를 사용하면 생략이 가능합니다.

-> port forwarding : 하나의 포트가 하나의 ip를 대표하도록 설정하는 것

가정집은 ipr가 고정이 나이고 유동입니다.

바뀌지 않도록 포트에 아이피를 고정 시키는 것

집에 있는 컴퓨터를 서버처럼 사용하기 위해서 이 작업을 합니다.

 

-> server : service를 제공하는 컴퓨터

주소가 고정해서 어디서든지 동일한 주소로 접속가능한 컴퓨터

-> web Server Programming : 웹 사이트 만드는 작업

처음 연습해서 외부에서 접속되는지 확인하고자 하면 Web hosting 업체에 맡기던지 아니면

port forwarding 을 이용해서 하면 됩니다.

 

-> Loopback : 자신의 컴퓨터를 구분하기 위한 ip

127.0.0.1(ipv4) , 0::0::0::0::0::0::0::1 (ipv6)

이것을 local host 라고도 합니다

 

-> URL : 웹에서 자원을 구분하기 위한 주소

http: 또는 https:// 도메인 주소나 ip 주소 : 포트번호 /요청 경로..? 이름 = 값&이름=값....

 

포트번호는 기본 서비스 포트번호를 사용하면 생략 가능

요청 경로는 서버에서 구분하기 위한 문자열인데 생략하면 서버 설정에 따라서

요청을 합니다.

 

? 다음은 query string 이라고도 하고 parameter 라고 도 한다.

클라이언트가 서버에게 전송하는 데이터 입니다

여러 개 보낼 때는 & 로 구분합니다

 

-> 파라미터 전송 방식

GET : 파라미터를 URL에 붙혀서 전송하는 방식 , 보안이 취약하고 데이터의 길이에

제한이 있지만 자동 재전송 기능이 있습니다. - 데이터 읽는 경우 사용

POST : 파라미터를 URL에 붙이지 않고 헤더에 숨겨서 전송하는 방식으로 보안이 우수하고

데이터의 길이에 제한이 없지만 자동 재전송 기능이 없음 - 데이터 읽는 작업을 제외하고는 모두 post

입력란에 Textarea , password , filed 이 있을 때는 반드시 post 방식이어야 한다.

 

** 데이터 사용

-> 일시적 저장 : 프로그램의 변수에 저장

 

-> 반영구적 저장

자신의컴퓨터(로컬) : 프로그램이 종료되더라도 데이터는 보존이 됩니다.

 컴퓨터에 문제가 발생하면 데이터를 사용할 수 없을 수 있음.

일반적이 컴퓨터는 IP 주소가 계속 변경되기 때문에 다른 컴퓨터와 데이터를 공유할 수 없습니다.

 

2) 다른컴퓨터 (서버) : 로컬 컴퓨터가 고장 나더라도 데이터를 계속 사용할 수 있습니다 다른 컴퓨터와 데이터를 공유할 수 있다

네트워크 가능한 상태여야 데이터를 사용할 수 있다

 

3) 데이터의 저장 형식

-> flat 파일 : 데이터를 일반 텍스트 형태로 저장

csv : , 나 공백으로 데이터를 구분해서 저장 - 많은 양의 데이터 중에서 변하지 않는 데이터의 경우 이런형태로 저장

 

-> 데이터베이스 : 데이터를 쉽게 관리하도록 해주는 소프트웨어

RDBMS : 테이블 구조를 생성해서 테이블에 데이터를 보관하고 sql 을 이용해서 사용하는 데이터베이스 프로그램 -  oracle(고가 -공공기관 , 대기업) ,  MySQL(무료나 저렴 - 스타트업 , 중소기업) ,  MS-SQL(oracle보다 저렴하지만 mysql 보다 는 비용 소모가 심할 수 있다 - 외국)

Tibero(국산 데이터베이스 - 공공기관)  . HANA DB( 독일의 SAP 에서 만든 데이터베이스 , 대기업들이 Oracle 에서 많이 이전) , DB2(IBM에서 제작한 것으로 일부 금융기관에서 사용) , MS-Access 등 

 

noSQL : 테이블 구조를 미리 만들지 않고 key - value 의 형태로 데이터를 조작하며 , 대부분 자바스크립트 문법을 사용 - Mongo DB(스타트업과 중견기업 최근에 많이 사용) , google 의 firebase , cassandra 등

 

-> 일반 응용 프로그램 형식의 데이터 : Excel , SPSS , SAS 등

 

4) 서버가 제공하는 형식

-> 예전에 대부분의 경우는 서버가 데이터를 제공하는 것이 아니고 view를 제공했습니다.

전통적인 html

 

-> 최근에는 서버는 데이터를 제공하고 클라이언트는 이 데이터를 받아서 자신에게 맞도록 출력하는 형태로 변경되고 있음

: Restful - REST API

 

csv : 특수한 문자나 기호로 데이터를 구분

 

xml : 데이터를 태그로 표시

 

json : 데이터를 자바스크립트 객체 표현법으로 표시

파이썬의 list 와 dict 표현법과도 동일합니다.

최근에 많이 사용 , twitter 나  facebook은 xml 형식은 지원하지 않음

 

5) 프로그래밍에서 중요한 점

 

서버 프로그래밍: 사용자 요청을 받아서 데이터베이스에 접속해서 작업을 수행하고 그 결과를 xml이나 json으로 던지는 것

 

클라이언트 프로그래밍: 서버에게 파라미터를 어떻게 넘겨주고 서버가 전달한 데이터를 파싱해서 어떻게 출력할 것인지가 중요

 

** 파일 처리

-> 일반 텍스트 파일을 생성해서 저장하고 읽기

-> 서버에서 로그를 기록하거나 간단한 데이터 저장에 많이 이용

 

1. 파일 처리 절차

파일 열기(open) -> 파일에 기록(write) -> 하거나 읽기(read) -> 파일 닫기(close)

-> 닫기를 하지 않으면 프로그램의 처리는 문제가 없을 수 있지만 프로그램이 실행 중인 동안은 다른 프로그램이 그 파일을 수정할 수 없도록 Lock이 설정됩니다.

 

2. open 함수

1) 쓰기 작업

-> 첫번째 매개변수로 파일의 경로를 대입

-> 두번째 매개변수로 'w'

->세번째 매개변수로 인코딩 방식을 대입 - 생략 가능

-> 기록을 할 때는 open 을 한 이후에 write , writelines 함수를 이용해서 기록

-> 기존에 존재하는 파일에 데이터를 이어서 기록할려면 w 대신에 a 를 이용

 

2) 읽기 작업

-> 첫번째 매개변수로 파일의 경로를 대입

-> 두번째 매개변수로 'r'을 대입하는데 생략하면 r

-> 세번째 매개변수로 인코딩 방식을 대입

-> 읽을 때는 전체를 읽어올 때 

3. csv 파일

-> Comma Separated values의 약자로 구분자로 구분된 문자열 입니다.

초창기에는 , 를 거의 주로 이용했으나 최근에는 공백이나 엔더토 많이사용

변경 가능성이 거의 없는 많은 양의 데이터를 전달하고자 할 때 주로 쓰입니다

 

-> 파이썬이 제공하는 csv 모듈을 이용해서 읽을 수 있고 기타 분석 라이브러리가 제공하는 모듈을 이용해서 읽기도 합니다.

1) 파일 읽기 

-> csv.reader(파일객체)를 호출하면 각 줄을 하나의 list로 하는 iteratior 가 리턴됩니다.

 

2) 파일 기록

-> csv.writer(파일객체)를 호출하면 파일에 기록할 준비가 되고 writerow([데이터 나열])

 

3) 파일을 열 때  close 를  하지 않아도 되도록 하기

 

with open() as 별명 :

           내용

-> with 블록이 끝나면 자동으로 close()를 호출해서 직접 닫지 않아도 됩니다.

 

4. 엑셀 파일 읽고 쓰기

-> 엑셀 파일을 읽고 쓰기를 할 때는 openpyxl 이나 xlrd 등의 패키지를 이용합니다.

-> 파일을 workbook 이라고 하면 workbook 안의 페이지를 worksheet 라고 합니다.

worksheet 안에 하나의 행을 row라고 하고 하나의 열을 column 이라고 하며 하나 하나의 사각형은 cell 이라고 합니다

 

-> openpyxl 패키지를 이용해서 엑셀 파일 읽기

1) openpyxl을 설치 - 맨 처음 한번만 하면 된다.

 

console(terminal)을 열어서 pip install openpyxl 을 입력하고 enter

 

2) 코드를 작성 

 

 

728x90

'Python' 카테고리의 다른 글

[파이썬] 웹 프로그래밍  (0) 2021.02.07
[파이썬] MySQL  (0) 2021.02.06
[파이썬] 자료규조  (0) 2021.01.31
[파이썬] 메모리관리  (0) 2021.01.30
[파이썬] 쓰레드  (0) 2021.01.30