프로그래밍 언어 35

[win32com] python으로 pptx 파일 다루기(2) - PPT 요소에 있는 데이터 접근하기

pptx 파일에 문자열 데이터는 text box와 table 형태로 저장될 수 있다. 두 형태 모두 비슷한 경로로 접근해 데이터를 가져올 수 있다. Textbox 글 상자에 존재하는 데이터를 읽는 방법은 textbox shape object에 접근하고 그 안에 있는 TextFrame, TextRange 순으로 접근해 Text 내용을 불러올 수 있다. TextFrame은 text 데이터, text의 양식 property, 양식을 조작할 수 있는 method를 포함하는 object이고, TextRange는 text 데이터와 그 데이터를 조작할 수 있는 method를 포함하고 있는 object이다. slide 내에 text 데이터를 가진 shape의 구조는 아래와 같이 생각할 수 있다. # pptx 파일에서 ..

[win32com] 파이썬으로 pptx 파일 다루기 (1) pptx의 원하는 위치에 접근하기

win32com은 Microsoft Windows OS가 제공하는 API이다. 이를 사용해 MS word, Power Point, Excel, Outlook 등 microsoft office의 제품들 다룰 수 있다. excel, ppt 파일을 더 쉽게 다룰 수 있도록 만들어진 여러 라이브러리들이 있지만, 환경에 따라 사용할 수 없는 라이브러리들이 있는 것 같다. python-pptx를 이용해 사내에서 업무 자동화 프로그램을 개발하려고 했으나 저장되어있는 pptx 파일을 불러오지 못하는 오류가 있어 win32com를 사용하게 되었다. PPT에 있는 데이터에 접근하기 지금까지 필요한 기능들은 pptx 파일에 저장된 데이터를 읽어 활용하는 것이라 원하는 데이터를 어떻게 받아올 수 있을지에 대한 고민을 정리한다..

[xlwings] 파이썬으로 excel 파일 다루기 (2) 여러 개의 파일과 시트 다루기

엑셀 작업을 할 때 여러 개의 파일이나 시트의 정보를 참조 및 활용해야 하는 경우가 있다. 이번 포스팅에서 새로운 시트를 만들거나 지우고, 하나의 파일에 있는 데이터를 다른 파일이나 시트에 옮기는 예시를 작성해보려고 한다. 시트 생성과 제거 workbook을 생성하고 파이썬을 통해 값과 수식을 입력해 계산한 값을 새로운 시트를 생성해 그 곳에 저장하는 예시를 작성했다. line 7은 엑셀 프로그램을 실행하고 여러 개의 엑셀 파일을 효과적으로 다룰 수 있도록 해준다. 완성된 프로세스를 실제로 사용할 때 엑셀 창을 띄우지 않고 작업을 수행할 때는 반드시 필요하다. line 9의 코드가 새로운 시트를 생성하는 코드이다. add의 argument로 after나 before로 새로 생성 될 시트의 위치를 지정해준..

[xlwings] 파이썬으로 excel 파일 다루기 (1) quick start

xlwings는 python으로 excel 파일을 생성하거나 읽고, 데이터를 불러와 python의 pandas, numpy, matplotlib 등 라이브러리의 유용한 기능을 활용한 결과물을 다시 excel 파일에 작성할 수 있도록 하는 라이브러리이다. excel을 사용하는 단순 반복 작업을 위한 스크립트 뿐만 아니라 데이터를 다루는 과정에서 결과물을 엑셀 창에 띄우는 등 활용할 수 있는 방법은 무궁무진한 라이브러리이다. excel의 VBA를 python으로 대체할 수 있는 수단으로 활용할 수도 있다. xlwings는 excel이 설치 되어있는 상태에서 사용 가능하기 때문에 실습 및 활용을 위해선 excel이 설치 된 환경에서 가능하다. 따라서 아쉽지만 colab에서는 연습이 불가능하다. 1. 설치 파이..

[C++] pair class 사용법

pair class pair class는 사용자가 지정한 임의의 타입의 데이터 2개를 저장하는데 사용할 수 있음 같은 타입의 데이터를 저장할 수도 있고, 서로 다른 타입의 데이터를 저장할 수 있다. pair 클래스를 사용함으로써 연관된 데이터를 다룰 때 구조체를 정의하는 번거로움을 덜 수 있다. pair 클래스는 utility 헤더에 존재하는 STL이지만 많이 사용하는 vector 헤더 파일에 포함되어 있다. pair 클래스 사용 #include // pair 선언 pair p; p.first; // 첫번째 요소에 접근 p.second; // 두번쨰 요소에 접근

[python] 객체 지향 프로그래밍 1 - Object oriented python

객체 지향 프로그래밍은 왜 쓸까? 파이썬 수업을 처음 들을 때 파이썬의 창시자가 크리스마스에 할 일이 없어 만든 언어라는 것과 함께 듣는 내용이 "python은 객체 지향 언어다" 라는 말이다. 그런데 python을 사용하다보면 object나 class를 사용하지 않아도 필요한 코드를 작성하는데 큰 문제가 없다. 그런데 만약 $^{1)}$다른 사람들과 협업을 하거나 $^{2)}$혼자라도 다루기 어려울 정도로 복잡한 프로그램을 작성하게 된다면 Object-oriented programming이 필요하게 될 것이다. object는 현실의 대상을 모델링해 class를 정의하고 한번 정의된 class를 재사용해 여러 개의 instance를 생성하기 때문에 코드 작정 중 실수를 줄이고 사람이 이해하기 쉬운 코드를..

함수

함수 함수는 parameter, return, operation으로 구성됨 (개념은 python과 차이 없음) parameter로 전달되는 값은 argument parameter와 return은 있을 수도 없을 수도 있음 함수 또한 사용되기 전에 선언되어야 함. 형식 return되는 type을 function_name 앞에 명시(void는 return되는 값이나 parameter가 없을 때 사용) parameter들도 각각 type을 명시해줘야 함 tip) Argument와 parameter 구분해 이해해야한다. parameter는 함수 밖에서 전달 받을 어떤 변수의 자리를 만들어 놓은 것. operation은 parameter들로 표현되어 수행될 프로그램이 작성됨. 이 때 operation 내에 사용된..

C 연산자

연산자 사칙연산 나누기를 제외하고 python과 같다. 연산자 의미 + 더하기 - 빼기 * 곱하기 / 나누기 - 정수끼리 나눌 시 몫 반환 % 나누기 - 나머지 반환, 피연산자는 반드시 정수형 대입 연산자(=) 대입할 때 좌변과 우변의 타입이 다를 경우 좌변의 변수 타입에 맞춰 대입 복합 대입 연산자 자기 자신에 어떤 연산을 할 때 연산자를 줄여 쓸 수 있음 복합 연산자 의미 a += n a = a + n a -= n a = a - n a *= n a = a * n a /= n a = a / n a %= n a = a % n 다른 타입 간 연산 컴파일러는 기본형 타입 간 연산시 서로 다른 타입이 맞지 않으면 자동으로 타입을 바꿈(implicit type conversion) 변환 과정을 정확히 모르면 경..

printf와 scanf

printf와 scanf는 string 형태로 format을 정하고 형식 지정자로 값을 대입하거나 입력받을 수 있도록 만든 표준 입출력 함수 표준 라이브러리 함수 #include 처럼 #include로 미리 작성된 프로그램을 불러옴 .h, .c, .txt 모두 사용할 수 있고 #include로 불러온 위치에 해당 내용이 실행됨 와 " "로 불러올 수 있는데, 는 표준 라이브러리에서 파일을 찾고, " "는 먼저 작업 폴더에서 찾고 없다면 표준 라이브러리에서 찾음 printf C의 표준 출력 함수 printf("출력할 서식", 변수1,..., 변수n) 형태로 사용할 수 있고 출력할 서식에 형식 지정자(format specifier)를 포함시켜 변수를 함께 출력할 수 있음 변수를 하나도 포함시키지 ..

C 언어에서 수 체계와 변수

C언어의 수 체계 C언어에서 2진수로 데이터를 저장. 최소 단위는 1bit 1bit는 오직 2가지만 표현할 수 있기 때문에 이를 8개나 16개씩 묶어 8진수나 16진수로 표현하는 것이 편리 10진법으로 10~15는 16진법에서 A~F로 표기 표현하고자 하는 값 앞에 접두사를 붙이는 방식으로 진법을 표시한다. 8진법 : 0 (숫자 영) 16진법 : 0x (숫자 영과 알파벳 엑스. x의 대소문자는 구분하지 않는다) example) C 프로그램에서 10진수 90을 16진수로 표현하면 0x5a, 8진수로 표현하면 0132 prinf 함수에서 format 지시어 옵션을 사용해 진법 변환을 할 수 있다. %o는 8진수를, %d는 10진수를, %x는 16진수를 지시 (line5) 지시어에 #을 삽입하면 진수를 나타내..