<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="ko">
	<id>https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Python_xml%ED%8C%8C%EC%9D%BC_%EA%B2%80%EC%83%89_%ED%9B%84_rename</id>
	<title>Python xml파일 검색 후 rename - 편집 역사</title>
	<link rel="self" type="application/atom+xml" href="https://devcafe.co.kr/w/index.php?action=history&amp;feed=atom&amp;title=Python_xml%ED%8C%8C%EC%9D%BC_%EA%B2%80%EC%83%89_%ED%9B%84_rename"/>
	<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Python_xml%ED%8C%8C%EC%9D%BC_%EA%B2%80%EC%83%89_%ED%9B%84_rename&amp;action=history"/>
	<updated>2026-04-06T02:06:55Z</updated>
	<subtitle>이 문서의 편집 역사</subtitle>
	<generator>MediaWiki 1.42.1</generator>
	<entry>
		<id>https://devcafe.co.kr/w/index.php?title=Python_xml%ED%8C%8C%EC%9D%BC_%EA%B2%80%EC%83%89_%ED%9B%84_rename&amp;diff=1415&amp;oldid=prev</id>
		<title>Devcafe: 새 문서: * 상위 폴더 a에서 시작하여 하위 모든 폴더를 재귀적으로 탐색하면서 .xml 파일을 찾아, 해당 파일을 폴더1_폴더2_..._파일명.xml 형식으로 변경하는 파이썬 프로그램 &lt;source lang=python&gt; import os  def rename_xml_files_in_tree(root_dir):     for dirpath, _, filenames in os.walk(root_dir):         for filename in filenames:             if filename.lower().endswith(&quot;.xml&quot;):                 abs_path = os.path.join(dirpath, filename)...</title>
		<link rel="alternate" type="text/html" href="https://devcafe.co.kr/w/index.php?title=Python_xml%ED%8C%8C%EC%9D%BC_%EA%B2%80%EC%83%89_%ED%9B%84_rename&amp;diff=1415&amp;oldid=prev"/>
		<updated>2025-05-19T23:18:52Z</updated>

		<summary type="html">&lt;p&gt;새 문서: * 상위 폴더 a에서 시작하여 하위 모든 폴더를 재귀적으로 탐색하면서 .xml 파일을 찾아, 해당 파일을 폴더1_폴더2_..._파일명.xml 형식으로 변경하는 파이썬 프로그램 &amp;lt;source lang=python&amp;gt; import os  def rename_xml_files_in_tree(root_dir):     for dirpath, _, filenames in os.walk(root_dir):         for filename in filenames:             if filename.lower().endswith(&amp;quot;.xml&amp;quot;):                 abs_path = os.path.join(dirpath, filename)...&lt;/p&gt;
&lt;p&gt;&lt;b&gt;새 문서&lt;/b&gt;&lt;/p&gt;&lt;div&gt;* 상위 폴더 a에서 시작하여 하위 모든 폴더를 재귀적으로 탐색하면서 .xml 파일을 찾아, 해당 파일을 폴더1_폴더2_..._파일명.xml 형식으로 변경하는 파이썬 프로그램&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
import os&lt;br /&gt;
&lt;br /&gt;
def rename_xml_files_in_tree(root_dir):&lt;br /&gt;
    for dirpath, _, filenames in os.walk(root_dir):&lt;br /&gt;
        for filename in filenames:&lt;br /&gt;
            if filename.lower().endswith(&amp;quot;.xml&amp;quot;):&lt;br /&gt;
                abs_path = os.path.join(dirpath, filename)&lt;br /&gt;
                &lt;br /&gt;
                # 상대 경로를 구해서 폴더명들과 파일명을 연결&lt;br /&gt;
                rel_path = os.path.relpath(abs_path, root_dir)&lt;br /&gt;
                parts = rel_path.split(os.sep)&lt;br /&gt;
&lt;br /&gt;
                # 파일명에서 확장자 분리&lt;br /&gt;
                name_without_ext, ext = os.path.splitext(parts[-1])&lt;br /&gt;
                &lt;br /&gt;
                # 새 파일명 만들기 (폴더와 파일 이름 모두 언더스코어로 연결)&lt;br /&gt;
                flat_name = &amp;quot;_&amp;quot;.join(parts[:-1] + [name_without_ext]) + ext&lt;br /&gt;
                new_path = os.path.join(dirpath, flat_name)&lt;br /&gt;
&lt;br /&gt;
                # 중복되지 않으면 이름 변경&lt;br /&gt;
                if abs_path != new_path:&lt;br /&gt;
                    os.rename(abs_path, new_path)&lt;br /&gt;
                    print(f&amp;quot;Renamed:\n{abs_path} -&amp;gt;\n{new_path}\n&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
# 사용 예시 (상위 폴더 &amp;#039;a&amp;#039;를 기준으로 실행)&lt;br /&gt;
rename_xml_files_in_tree(&amp;quot;a&amp;quot;)&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
⸻&lt;br /&gt;
&lt;br /&gt;
예시:&lt;br /&gt;
&lt;br /&gt;
폴더 구조가 다음과 같을 경우:&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
a/&lt;br /&gt;
├── b/&lt;br /&gt;
│   └── c/&lt;br /&gt;
│       └── d/&lt;br /&gt;
│           └── t.xml&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
* 실행 후 결과는:&lt;br /&gt;
&amp;lt;source lang=python&amp;gt;&lt;br /&gt;
a/b/c/d/t.xml → a/b/c/d/a_b_c_d_t.xml&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
⸻&lt;br /&gt;
&lt;br /&gt;
참고 사항:&lt;br /&gt;
	•	os.walk()로 전체 하위 폴더를 탐색합니다.&lt;br /&gt;
	•	os.path.relpath()로 a 폴더 기준 상대 경로를 구하고, 각 디렉토리 이름과 파일명을 _로 연결합니다.&lt;br /&gt;
	•	이름이 이미 변경된 상태이거나 중복된다면 변경하지 않습니다.&lt;br /&gt;
&lt;br /&gt;
[[category:python]]&lt;/div&gt;</summary>
		<author><name>Devcafe</name></author>
	</entry>
</feed>