이미지 데이터셋을 다루거나 정제된 이미지 폴더의 파일 수를 파악해야 하는 경우가 많습니다. 특히 하위 폴더가 복잡하게 구성된 구조에서는 재귀적으로 전체 폴더를 순회하면서 이미지 파일을 세는 로직이 필요합니다.
Java에서는 이를 직접 재귀함수로 구현해야 하지만, Python은 os.walk() 라는 내장 모듈로 매우 간단하게 처리할 수 있습니다.
이번 글에서는 Python의 os.walk()를 이용해 폴더 내 이미지 파일 수를 집계하는 방법을 소개하고, Java 방식과 비교해 생산성과 코드 간결성의 차이도 함께 알아보겠습니다.
1. Java에서의 폴더 탐색: 수동 재귀의 한계
Java에서 폴더 내의 파일을 탐색하기 위해서는 일반적으로 다음과 같은 수동 재귀 로직이 필요합니다.
public static int countImages(File dir) {
int count = 0;
File[] files = dir.listFiles();
if (files == null) return 0;
for (File file : files) {
if (file.isDirectory()) {
count += countImages(file); // 재귀 호출
} else if (file.getName().matches("(?i).*\\.(png|jpg|jpeg)$")) {
count++;
}
}
return count;
}
이 방식은 다음과 같은 문제점이 있습니다:
예외 처리 및 디렉토리 접근 검증 코드를 별도로 작성해야 함
파일 확장자 필터링을 위한 정규식 작성 필요
코드 길이가 길고 가독성이 떨어짐
2. Python의 os.walk: 자동 재귀의 강력함
2.1 os.walk란?
os.walk(path)는 지정한 경로부터 시작해 모든 하위 디렉토리를 자동으로 순회하며, 각 폴더 내의 파일과 디렉토리 정보를 튜플 형태로 반환해주는 제너레이터 함수입니다.
for root, dirs, files in os.walk(target_path):
# root: 현재 탐색 중인 폴더 경로
# dirs: 현재 폴더 내의 하위 폴더 목록
# files: 현재 폴더 내의 파일 목록
2.2 이미지 파일 필터링 예시
이미지 파일 확장자를 필터링하려면 files 리스트에 대해 다음과 같은 list comprehension을 사용하면 됩니다:
image_files = [
f for f in files
if f.lower().endswith((".png", ".jpg", ".jpeg"))
]
3. 실전 코드 예시 및 설명
다음은 Python 코드 전체입니다. 이 코드는 정제/ 폴더 하위에 있는 모든 이미지(.png, .jpg, .jpeg)파일의 개수를 계산하고, 결과를 JSON 파일로 저장합니다.
FastAPI 를 사용하였습니다
@dashboard_router.post("/update-image-count", response_model=ImageCountResponse)
def update_image_count_json():
try:
JSON_PATH = os.path.join(ROOT_DIR, "etc/refinedDataCount.json")
# JSON 로드 또는 초기화
if os.path.exists(JSON_PATH):
with open(JSON_PATH, "r", encoding="utf-8") as f:
data_count = json.load(f)
else:
data_count = {}
# 탐색할 루트 경로 설정
refined_root = os.path.join(ROOT_DIR, "정제")
image_count = 0
# os.walk를 통한 자동 재귀 탐색
for root, dirs, files in os.walk(refined_root):
image_count += len([
f for f in files
if f.lower().endswith((".png", ".jpg", ".jpeg"))
])
# 결과 저장
data_count["total_png"] = image_count
os.makedirs(os.path.dirname(JSON_PATH), exist_ok=True)
with open(JSON_PATH, "w", encoding="utf-8") as f:
json.dump(data_count, f, ensure_ascii=False, indent=4)
print(f"✅ 총 이미지 개수: {image_count} → {JSON_PATH} 저장됨")
return {"success": True, "message": "이미지 개수 업데이트 완료", "image_count": image_count}
except Exception as e:
raise HTTPException(status_code=500, detail=f"Error: {str(e)}")
4. 핵심 포인트 정리
항목JavaPython (os.walk)
항목
JAVA
Python
재귀 구현
직접 구현 필요
내장 함수로 자동 수행
코드 길이
길고 복잡함
간결하고 직관적
예외 처리
수동 처리
try-except로 간단 처리
유지보수성
낮음
높음
Python은 반복적이고 재귀적인 작업을 매우 간단하게 처리할 수 있도록 다양한 내장 기능을 제공합니다. os.walk는 그 대표적인 예시로, 파일 시스템을 다루는 모든 작업에 강력한 도구가 됩니다.
5. 마무리
Python의 os.walk()는 재귀적으로 파일 시스템을 탐색할 수 있는 매우 강력하고도 간단한 도구입니다. Java와 같은 언어에서는 재귀 구조를 직접 설계해야 하는 반면, Python은 이러한 반복 작업을 몇 줄의 코드로 깔끔하게 처리할 수 있습니다.
이미지 파일 개수 집계, 대용량 폴더 분석, 정제 데이터 자동화 등에 활용하면 실무에서 효율적으로 사용할 수 있습니다. 지금 바로 여러분의 프로젝트에 적용해보세요!
솔직히 말하면, 2025년 지금 AI 때문에 직업 생태계가 완전히 뒤바뀌고 있어. 세계경제포럼 보고서 보니까 전 세계 기업 41%가 2030년까지 직원 수 줄일 계획이라고 하더라. 진짜 심각한 상황이야.
ai로 생성한 이미지 입니다.
AI한테 밀려날 직업들
지금 당장 위험한 직업들
패턴사 (현재 대체율이 71.65%래)
물류사무원 (3년 후엔 더 심해질 듯)
우편 서비스직, 비서, 급여 담당 이런 애들이 제일 빨리 사라질 직업이라고 함
예상 못한 대체 대상들 생성형 AI가 발전하면서 창의적인 일도 많이 영향받고 있어:
그래픽 디자이너랑 법무 비서가 빠르게 감소하는 직업 상위권에 들어감
기술직 (코더, 프로그래머, 데이터 분석가)
미디어 쪽 (광고, 콘텐츠 제작, 기자)
한국은행 조사 결과가 좀 충격적인데, 고학력·고임금 일자리가 오히려 AI에 더 많이 노출되어 있다고 해. 의사, 회계사, 변호사도 대체 가능성 있다니까 진짜 세상이 바뀌는구나 싶어.
새로 뜨는 유망 직업들
AI 관련 핵심 직업 링크드인에서 발표한 2025년 유망 직업 순위 보니까 AI 관련 직종이 상위권 독점하고 있더라:
AI 엔지니어 (1위)
AI 컨설턴트 (2위)
데이터 엔지니어 (6위)
미래형 신직업들 기술 발전이랑 사회 변화로 생겨날 새로운 직업들:
가상현실 디자이너: VR 콘텐츠 만드는 일
인공지능 윤리 전문가: AI 윤리 문제 관리하는 사람
로봇 테라피스트: 로봇으로 치료하는 서비스
생체 디지털 아티스트: 생명과학이랑 디지털 아트 섞은 거
클라이메트 디자이너: 기후 변화 대응 설계 전문가
계속 성장할 직업들
물리치료사 (3위)
간호사, 사회복지사, 교사 같은 돌봄이랑 교육 관련 일
농업 종사자 같은 필수 직종들
AI가 대체하기 어려운 직업
AI 노출 지수가 낮은 직업들 보니까 사람이랑 직접 만나고 관계 맺는 게 중요한 특징이 있어:
음식 관련 단순 종사자
대학교수랑 강사
종교 관련 종사자
운송 서비스 종사자
가수 같은 예술 분야
프로게이머 (대체율 0.00%라니 신기하네)
변화 규모가 얼마나 클까
세계경제포럼 보고서 내용:
앞으로 5년간 직업 바꾸는 사람: 1억 명 넘을 듯
새로운 기술 인재 수요: 약 900만 명 증가
AI 도구 설계 인력 채용 계획: 기업 70%
AI 협업 인력 채용 계획: 기업 62%
미래 직업 시장 대비 전략
핵심 역량 개발 2030년까지 가장 수요 많은 기술:
AI랑 빅데이터 활용 능력
네트워크랑 사이버 보안 지식
기술 문해력 (디지털 리터러시)
인간 고유 가치 강화 AI가 대체하기 어려운 인간만의 능력에 집중해야 해:
창의적 사고력이랑 문제 해결 능력
감성적 소통이랑 공감 능력
복잡한 판단력이랑 윤리적 사고
ai로 생성한 이미지입니다.
앞으로 어떻게 될까
AI 시대 직업 변화는 완전한 대체보다는 '인간-기계 협업'이 핵심이야. 중요한 건 기술 변화에 적응하면서도 인간 고유의 가치를 계속 개발하는 거지.
미래 직업 시장에서 성공하려면 평생 학습 마인드랑 새로운 기술 적응력이 필수고, 동시에 AI가 대체 못하는 인간적 역량을 키워나가는 게 중요해.
모두들. 힘내자.
요즘은 ai로 동영상, 이미지 생성하는게 재밌어.
그냥 모든 일 AI 가 다해줘~!!~!
부록
웹 개발자로 살면서 지금의 AI 발전이 반갑기도 하고 무섭기도 해.
내가 해야할 업무의 범위와 양은 늘어났지만 (요즘은 처음하는 일도 함), 그에 따른 숙련도는 못쫓아오는 것 같더라고.
나는 요즘은 Python을 주로 하는 내부 프로젝트를 진행 중이야. 여기서 문제가 발생해. 나는 파이썬을 해본 적이 없어. 그래서 파이썬의 문법에 대해 정확히 알지 못하고 지속적으로 사용하고 있어. (이걸 사용하고 있다고 말할 수 있는건가? Claude, ChatGPT, Gemini 등과 주로 대화하면서 요청하지;) 근데 일을 해야하는 양은 지속적으로 추가가 되고, 해당 내용을 이해해야한다고 요구를 받고 있어. 어찌저찌 맞춰서 진행하고 있긴한데,, 쉽지는 않더라.
최근 AI 코딩 도구들이 우후죽순 쏟아지고 있는 가운데, 구글의 Gemini CLI와 Cursor AI가 개발자들 사이에서 특히 주목받고 있다. 두 도구 모두 나름의 장단점이 있지만, 실제로 사용해보니 확실히 차이가 느껴진다.
gemini cli & cursor ai
✅ UI/UX: Cursor의 압승
Cursor AI는 애초에 코드 에디터로 설계된 만큼 UI 면에서는 확실히 한 수 위. VS Code를 포크해서 만들어진 덕분에 기존 VS Code 사용자라면 별다른 학습 없이 바로 적응할 수 있다.
직관적인 인터페이스: 채팅 패널이 에디터에 자연스럽게 통합되어 있어 코드 작성 중에도 AI와 대화하기 편하다
실시간 코드 제안: 타이핑하는 동안 실시간으로 코드를 제안해주는 기능이 매우 자연스럽다
멀티파일 편집: 여러 파일을 동시에 수정할 때도 시각적으로 변경사항을 확인하기 쉽다
반면 Gemini CLI는 터미널 기반이라 아무래도 시각적 편의성에서는 아쉬움이 있었다. 물론 CLI 환경에 익숙한 개발자라면 오히려 더 효율적일 수도 있지만, 일반적인 사용성 면에서는 Cursor가 확실히 우위에 있다.
✅ 경제적 측면: Gemini CLI의 완승
가격 면에서는 Gemini CLI가 압도적. 구글이 정말 파격적인 조건을 내놓았다.
Gemini
Cursor AI
기본 요금
완전 무료
$20/월 (Pro 플랜)
무료 체험
제한 없음
1개월 무료
일일 요청 한도
1,000회
제한적
분당 요청 한도
60회
-
Gemini CLI는 개인 구글 계정으로 로그인하면 Gemini 2.5 Pro 모델을 완전 무료로 사용할 수 있다. 하루 1,000회, 분당 60회라는 넉넉한 한도까지 제공한다.
Cursor AI는 Pro 플랜이 월 20달러인데, 이는 연간 240달러에 해당한다. 물론 Cursor도 1개월 무료 체험을 제공하지만, 장기적으로 보면 비용 부담이 만만치 않다.
1년 구독 해버린 사람으로써 살짝 아쉬울 정도..?
✅ 속도: Gemini CLI가 근소하게 앞서
실제 사용해보니 응답 속도 면에서는 Gemini CLI가 조금 더 빠르다고 느껴진다. 특히 Gemini 2.5 Pro 모델을 사용할 때 응답이 상당히 빠르다.
다만 이 부분은 사용 환경과 네트워크 상황에 따라 달라질 수 있다. Cursor AI도 충분히 빠른 편이지만, 복잡한 요청을 처리할 때는 Gemini CLI가 좀 더 민첩하게 반응하는 것 같다.
✅ 편의성: Cursor AI의 우위
편의성 면에서는 Cursor AI가 확실히 앞선다. 특히 개발 경험이 많지 않은 사용자에게는 더욱 그렇다.
Cursor AI의 편의성 장점:
학습 곡선이 낮음: VS Code 사용자라면 바로 적응 가능
시각적 피드백: 코드 변경사항을 실시간으로 확인 가능
통합된 워크플로우: 에디터 안에서 모든 작업 완료 가능
초보자 친화적: 코딩 경험이 적어도 쉽게 사용 가능
Gemini CLI의 아쉬운 점:
터미널 의존성: CLI 환경에 익숙하지 않으면 진입 장벽이 높음
복사-붙여넣기 필요: 생성된 코드를 직접 복사해서 에디터에 붙여넣어야 함
시각적 제약: 코드 변경사항을 바로 확인하기 어려움
Gemini CLI가 2025년 6월에 출시된 따끈따끈한 도구인 만큼, 아직 사용자 경험 최적화가 부족한 면이 있다.
✅ 기능적 특징 비교
Gemini CLI만의 특별한 기능:
구글 검색 통합: 터미널에서 직접 구글 검색 가능
MCP 서버 지원: 외부 도구와의 연동이 강력함
파일 시스템 직접 접근: 파일 읽기/쓰기/실행이 자유로움
대용량 컨텍스트: 100만 토큰 컨텍스트 윈도우 지원
Cursor AI만의 장점:
실시간 코드 제안: 타이핑과 동시에 코드 완성
멀티파일 리팩토링: 여러 파일을 동시에 수정 가능
API 문서 통합: API 문서를 읽고 정확한 코드 생성
인라인 편집: 코드 블록을 선택해서 바로 수정 요청 가능 : Agent의 강력함
✅ 결론: 용도에 따른 선택
두 도구 모두 각각의 강점이 뚜렷하다.
Gemini CLI를 추천하는 경우:
비용을 최대한 절약하고 싶은 개발자
터미널 환경에 익숙한 숙련된 개발자
복잡한 자동화 작업이 필요한 경우
대용량 코드베이스를 다루는 경우
Cursor AI를 추천하는 경우:
개발 경험이 많지 않은 초보자
시각적 피드백을 중시하는 개발자
VS Code에 익숙한 사용자
개인적으로는 학습 목적이나 간단한 프로젝트에는 Cursor AI, 본격적인 개발 작업에는 Gemini CLI를 사용하는 것이 좋을 것 같다. 특히 Gemini CLI의 무료 정책은 정말 매력적이다. 구글이 언제까지 이 혜택을 유지할지는 모르겠지만, 지금 당장은 가성비가 매우 훌륭하다고 불 수 있다.
이번 포스팅에서는 React.js 의 라이브러리 중 하나인React-Query를 사용해보려고 합니다.
소스를 구현하고 동작시켜보는데, tailwindcss + cursor ai 의 많은 도움을 받았답니다..
일단 결과물 먼저 보고 오시죠!
Result
1. React-Query 설치
당연하게 npm i react-query 했는데, 오류나면서 안된다길래. 뭐지..? 싶어서 열심히 검색해왔다.
"@tanstack/react-query": "^5.67.2" //해당 버전을 다운로드 받으면 된다.
//기존의 react-query는 삭제해준다.
npm uninstall react-query
//tanstack의 버전으로 다운로드 해준다.
npm install @tanstack/react-query