일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 윈도우11
- VBA
- Outlook
- html
- 아웃룩
- office
- 문자열
- 파이썬GUI
- pyqt5
- 파이썬3
- matlab
- 오피스
- 파워포인트
- git
- win32com
- python3
- python
- windows
- Windows10
- Excel
- 깃
- Android
- Windows11
- 엑셀
- 윈도우10
- pythongui
- 안드로이드
- pandas
- 파이썬
- 비주얼베이직
Appia의 IT세상
파이썬[Python] C 소스 코드 공백포함, 공백 미포함 코드라인 수 확인하기 본문
파이썬[Python] C 소스 코드 공백포함, 공백 미포함 코드라인 수 확인하기
최근에 C언어로 작성된 소스코드를 파싱해야하는 일들이 조금 생겼습니다. C코드 최적화등에 사용하기 위해서 다양한 작업들을 하고 있습니다. 그중에서 이번에는 C언어로 작성된 소스코드를 파싱해서, 라인수를 확인하는 코드를 작성해보도록 하겠습니다.
(물론 이 부분도 현재 하는 작업과 연관이 있습니다.)
먼저, 2가지 형태로 접근을 할 것입니다. 첫번째는 공백이 라인수를 계산하는 방법, 그리고 다른 하나는 아무것도 작성이 안된 부분에 대해서는 스킨하는 방식으로 라인을 계산하는 방법에 대해서 이야기를 해보겠습니다.
일단, 해당 코드는 다음과 같은 경로에서 참고하였습니다.
https://c.happycodings.com/sorting-searching/code12.html
그럼 코드를 한번 살펴보도록 하겠습니다.
def reading_source(path):
sourcecode = open(path,"r")
data = sourcecode.readlines()
number = 0
for i in data:
number = number + 1
print(str(number)+"\t"+i)
return number
if __name__ == '__main__':
file = "D:\Example\Example_C.C"
countline = reading_source(file)
print(countline)
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
67
이 부분은 매우 간단합니다. 파일 입출력을 이용하여, readline()을 이용하여, 루프를 돌면서 카운트를 추가하는 방식입니다.
그럼 이번에는 공백이 미포함하여 코드라인을 확인 하는 부분에 대해서 이야기를 해보겠습니다.
import re
def reading_source(path):
sourcecode = open(path,"r")
data = sourcecode.readlines()
number = 0
notWord = re.compile('\w')
for i in data:
val_i = notWord.search(i)
if val_i != None :
number = number + 1
print(str(number)+"\t"+i)
return number
if __name__ == '__main__':
file = "D:\Example\Example_C.C"
countline = reading_source(file)
print(countline)
위의 코드를 실행하면 다음과 같은 결과가 나타납니다.
47
여기에서는 정규식을 사용하기 위해서 re모듈을 Import하셔야 합니다. 그런후에 '\w'부분을 이용하여 일반 텍스트가 없는 부분에 대해서는 선별하는 방식으로 작성을 하였습니다. 이와 같은 방식으로 하면, 아무것도 없는 공백의 라인을 스킵하고, 관련된 라인을 카운트 할 수 있습니다. 이와 같은 방식으로 실제 코드가 작성되어 있는 부분에 대해서 카운트를 할 수 있습니다.
이번 포스팅에서는 파이썬[Python] C 코드 공백포함, 공백 미포함 코드라인 수 확인하기라는 주제로 포스팅을 해봤습니다. 혹 궁금하신 점이나 문의 사항이 있으시면 언제든지 댓글 및 방명록에 글 남겨주시길 바랍니다. 감사합니다.
'Python > Python 응용' 카테고리의 다른 글
파이썬[Python] C 소스 코드에 선언된 함수 정보 입력 인자, 리턴인자 정보 출력하기 (0) | 2021.07.28 |
---|---|
파이썬[Python] 정규표현식을 이용한 C 소스 코드에 선언된 함수 출력하기 (0) | 2021.07.27 |
엑셀[Excel] Win32com을 입력받은 데이터 양(행,열)가 불규칙할 때 사용하기 좋은 팁 (0) | 2021.07.05 |
파이썬[Python] 딕셔너리(Dictionary)의 키(Key)가 다른 딕셔너리에 존재여부 확인하기 (0) | 2021.06.30 |
파이썬[Python] 파일의 생성 시간 및 수정 시간 확인하기 (5) | 2021.06.08 |