반응형
반응형

 

 ./input/ 폴더 안에 있는 엑셀파일을 찾아서 데이터 있는 셀의 앞뒤 공백을 삭제

 

# pip install pandas openpyxl


"""
    ./input/ 폴더 안에 있는 엑셀파일을 찾아서 데이터 있는 셀의 앞뒤 공백을 삭제

"""

import pandas as pd
import os

# 엑셀 파일이 있는 폴더 경로
input_folder = "./input/"

# 공백이 제거된 파일을 저장할 폴더 (원본 폴더에 저장)
output_folder = "./output/"

# 출력 폴더가 없으면 생성
if not os.path.isdir(output_folder):
    os.makedirs(output_folder)

# input 폴더 내의 모든 파일 목록 가져오기
files = os.listdir(input_folder)

print(f"'{input_folder}' 폴더에서 엑셀 파일을 찾고 있습니다...")

# 파일 목록을 순회
for filename in files:
    # 파일 확장자가 .xlsx 또는 .xls인지 확인
    if filename.endswith(".xlsx") or filename.endswith(".xls"):
        print(f"\n파일 '{filename}' 처리 중...")
        
        # 전체 파일 경로 설정
        file_path = os.path.join(input_folder, filename)
        
        try:
            # 엑셀 파일을 데이터프레임으로 읽어오기
            # 모든 시트를 읽어오기 위해 sheet_name=None 옵션 사용
            #excel_data = pd.read_excel(file_path, sheet_name=None) # 헤더 제외
            excel_data = pd.read_excel(file_path, sheet_name=None, header=0, dtype=str) # 모든 데이터를 문자열로 읽기
            
            # 수정한 내용을 저장할 새로운 엑셀 파일 객체 생성
            output_filepath = os.path.join(output_folder, f"{os.path.splitext(filename)[0]}_cleaned{os.path.splitext(filename)[1]}")
            
            with pd.ExcelWriter(output_filepath, engine='openpyxl') as writer:
                # 각 시트(Sheet)를 순회하며 작업
                for sheet_name, df in excel_data.items():
                    print(f"  - 시트 '{sheet_name}' 공백 삭제 중...")
                    
                    # 문자열 타입의 열만 선택하여 공백 제거
                    for col in df.columns:
                        if df[col].dtype == 'object':
                            # .str.strip() 메서드로 앞뒤 공백 제거
                            #df[col] = df[col].astype(str).str.strip()                            
                            df[col] = df[col].fillna('').astype(str).str.strip() # NaN 값이 있을 때 오류 방지
                            print(df[col])
                    
                    # 수정된 데이터프레임을 새로운 엑셀 파일의 해당 시트에 저장
                    df.to_excel(writer, sheet_name=sheet_name, index=False)
            
            print(f"'{filename}' 파일 처리가 완료되었습니다. '{output_filepath}'에 저장됨.")

        except Exception as e:
            print(f"  - 오류 발생: '{filename}' 파일을 처리할 수 없습니다. 오류: {e}")

print("\n모든 엑셀 파일 처리가 완료되었습니다.")
반응형
반응형

본격적인 여름이
시작될 때쯤 밤꽃의 그 독특한
향기를 특별히 사랑하는 생명은 꿀벌입니다.
양봉 농가들은 이 시기에 밤꽃으로부터 수집된
꿀을 별도로 채밀하여 '밤꿀'이라는 이름으로 따로
판매할 만큼 밤나무의 꽃은 단일 식물로는 막대한
양의 꿀을 생산합니다. 밤꽃은 짙은 녹음 속에서
압도적인 향기를 풍겨 벌을 부르고, 아낌없이
꿀을 나눠주는 것으로 여름철의
치열함을 극복합니다.


- 김용규의《어제보다 조금 더 깊이 걸었습니다》중에서 -


* 식물의 꽃향기는
매우 다양합니다. 저마다의 향기로
벌과 나비를 유혹합니다. 특히 밤꽃에서는
독특한 향기가 납니다. 스퍼미딘(spermidine)과
스퍼민(spermine)이라는 성분 때문입니다.
압도적인 향기로 벌을 부르고, 마침내
최고의 '밤꿀'을 만들어 냅니다.
그사이 토실한 알밤이
익어갑니다.

반응형

'아침편지' 카테고리의 다른 글

기다림  (1) 2025.09.01
쉬고 싶다는 생각  (1) 2025.09.01
'행복의 정답'은 없다  (1) 2025.08.27
이유 없는 기쁨  (1) 2025.08.26
더 큰 성공의 길  (1) 2025.08.25
반응형

세상에 모두에게 옳은 정답은 없어요.
당신이 충분히 고민하고 결정했다면,
그래서 당신이 행복하다면,
당신은 훌륭하게 당신만의
정답을 찾아낸 거예요.


- 황제펭귄의《구급책》중에서 -


* '행복의 정답'은 없습니다.
행복으로 가는 지름길도 없습니다.
많이 고민하고 기도하며 내린 결정이면
그 결과가 어찌 되었든 상관없습니다.
나의 결정을 내가 사랑하면
그것이 행복입니다.

반응형

'아침편지' 카테고리의 다른 글

쉬고 싶다는 생각  (1) 2025.09.01
압도적인 밤꽃 향기  (0) 2025.08.28
이유 없는 기쁨  (1) 2025.08.26
더 큰 성공의 길  (1) 2025.08.25
전율과 희열이 춤추는 무릉도원  (0) 2025.08.22
반응형

[여행] 기차타고 서울에서 울진까지, 강릉에서 울진까지 

 

 

반응형
반응형

'설렘'은
단순한 감정이 아니라,
본래의 나와 우주의 파동이 맞닿아 있다는
표시입니다. 살아 있는 느낌, 진실됨, 내면의
평온함, 충만함, 에너지로 가득한 느낌, 창조성,
이유 없는 기쁨 등으로 표현되는 이 설레는
마음은, '위대한 모든 것'과 공명하기에
일을 잘 풀리게 한다는 거죠.


- 다릴 앙카의《BASHAR 다시, 가슴 뛰는 삶을 살아라》중에서 -


* 눈물이 흐를 때가 있습니다.
슬픔 때문에 흘리는 눈물이 아닙니다.
너무 고맙거나 따뜻할 때 흘리는 눈물입니다.
반대로 이유 없는 기쁨이 솟구칠 때가 있습니다.
설렘과 충만감, 생명력으로 가득한 그 순간은
이 지구 파동과 공명하는 순간입니다.
나와 우주가 하나가 됩니다.

반응형

'아침편지' 카테고리의 다른 글

압도적인 밤꽃 향기  (0) 2025.08.28
'행복의 정답'은 없다  (1) 2025.08.27
더 큰 성공의 길  (1) 2025.08.25
전율과 희열이 춤추는 무릉도원  (0) 2025.08.22
마음의 본성  (0) 2025.08.21
반응형

[Just Do Rust - 러스트 기초부터 고급까지](https://wikidocs.net/book/16747)

 

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

 

C언어를 처음 접한 것이 1990년입니다. 이후, C++/C#, Java, VBA, Python 등의 언어를 사용했고, 요즘 관심있는 언어가 Rust입니다.

관심 가지는 이유는 C언어의 성능과 Java나 Python 같은 안정성과 편리성을 가지고 있기 때문입니다. 특히, NSA(미국 국가안보국)에서 메모리 안전 문제로 C나 C++ 대신에 Rust와 같은 안전한 언어를 사용하도록 권고 했기에, 미국을 중심으로 기존의 C/C++로 된 코드를 Rust로 바꾸는 작업이 이루어지고 있고, 안전성이 요구되는 프로그램은 Rust로 개발되는 추세여서, 앞으로 Rust 언어의 활용이 많아질 것으로 보이기 때문입니다.

NSA가 권고하는 메모리 안전한 언어Python, Java, C#, Go, Delphi/Object Pascal, Swift, Ruby, Rust, Ada

성능까지 고려하면 Rust가 거의 유일한 C/C++ 대체 언어

필자가 생각하는 향후 Rust가 각광 받을 분야는,

  • 웹서버: 안전성과 성능이 좋아서, 현재 Java로 되어 있는 웹서버쪽은 Rust로 많이 전환될 것으로 예상
  • 암호 라이브러리: C/C++로 되어 있는 암호 라이브러리는 항상 Buffer overflow의 위험을 내재하고 있습니다. 이 부분도 Rust로의 전환이 예상됩니다.
  • 소형 기기 펌웨어: 구글은 이미 Android Virtualization Framework를 Rust로 포팅함. 대부분 C/C++로 작성되어 있어 메모리 안전성이 문제되는 펌웨어 단 모듈들은 Rust로 바꿔질 것임

성능도 좋고 안전하기도 한, 두 마리 토끼를 다 잡은 대신에, Rust 언어를 배우기는 쉽지 않습니다. 안전한 메모리 처리를 위해서 Rust에서 컴파일 전에 체크하는 '소유권', '에러처리', '타입 체크' 등을 개발자가 알아서 코드에 반영해야하기 때문입니다. 그렇지 않으면 아예 컴파일이 되지 않습니다. Java나 파이썬을 배우는 것 대비 2~3배 정도는 시간을 더 들여야 Rust에 익숙해질 것입니다.

이 책은 한국에 있는 개발자를 대상으로 Rust 언어를 보다 쉽게 익숙하게 익힐 수 있도록 제작되었습니다.

효율적으로 공부할 수 있도록, 실제 꼭 알아야하는 부분만을 추릴려고 노력했습니다. 따라서, 이 책에서는 Rust에서 제공하는 모든 내용을 담지는 않습니다. 메뉴얼이 아닙니다.
그러나, 꼭 필요한 부분은 가능한 자세하고 깊게 설명합니다.

 

 

챕터 내용을 익히는데 좀 더 도움이 되도록 챕터 내용을 그대로 따라 해볼 수 있는 유튜브 영상 링크입니다.

https://youtu.be/kPLuJgkpYVY

 

반응형

+ Recent posts