답변:
사용 os.rename
:
import os
os.rename('a.txt', 'b.kml')
C:/folder/file.txt
Windows 또는 /home/file.txt
Linux / MacOS)를 사용해야합니다 .
os.replace
import shutil
shutil.move('a.txt', 'b.kml')
파일 이름을 바꾸거나 파일을 이동하는 데 사용됩니다.
shutil.move
원자 연산이 아니기 때문에 좋은 옵션이 아닙니다. 예를 들어, 파일이 열려 있으면을 사용하여 파일 shutil.move
을 만들지 만 파일을 new_name
삭제하지 old_name
않으므로 두 파일이 남습니다. os.rename
반면에 아무것도하지 않을 것인데, 이것이 더 좋은 선택 입니다. 을 사용하면 shutil.move
오류가 발생하더라도 여전히 악성 파일을 확인하고 삭제하는 것에 대해 걱정해야합니다. 더 나은 도구가 존재할os.rename
때 가치가 없습니다 .
파이썬 3.4 부터 pathlib 모듈을 사용하여 이를 해결할 수 있습니다 .
이전 버전 인 경우 여기에 있는 백 포트 버전을 사용할 수 있습니다.
루트 경로에 있지 않다고 가정하고 이름을 바꾸려는 전체 경로를 제공해야한다고 가정 해 보겠습니다.
some_path = 'a/b/c/the_file.extension'
따라서 경로를 가져 와서 Path
객체를 만들 수 있습니다 .
from pathlib import Path
p = Path(some_path)
우리가 지금 가지고있는이 개체에 관한 정보를 제공하기 위해, 우리는 그 개체를 추출 할 수 있습니다. 예를 들어 파일 이름을에서 the_file
로 수정하여 파일 이름을 바꾸려는 경우 파일 the_file_1
이름 부분을 가져올 수 있습니다.
name_without_extension = p.stem
그리고 여전히 확장을 손에 쥐십시오.
ext = p.suffix
간단한 문자열 조작으로 수정을 수행 할 수 있습니다.
파이썬 3.6 이상은 f- 문자열을 사용합니다!
new_file_name = f"{name_without_extension}_1"
그렇지 않으면:
new_file_name = "{}_{}".format(name_without_extension, 1)
이제 rename
생성 한 경로 객체 에서 메소드를 호출하고 ext
원하는 올바른 이름 바꾸기 구조를 완성하기 위해 를 추가하여 이름 바꾸기를 수행 할 수 있습니다 .
p.rename(Path(p.parent, new_file_name + ext))
더 간단하게 단순성을 보여주기 위해 :
파이썬 3.6 이상 :
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, f"{p.stem}_1_{p.suffix}"))
Python 3.6보다 작은 버전은 대신 문자열 형식 메소드를 사용합니다.
from pathlib import Path
p = Path(some_path)
p.rename(Path(p.parent, "{}_{}_{}".format(p.stem, 1, p.suffix))
pathlib
라이브러리는 python 3.4에 도입되었으므로 여기에 답을 공유하면 더 복잡한 요구 사항에 대한 다목적 성과 사용법을 보여주는 견고한 모듈에 대한 노출을 제공합니다.
os.rename(old, new)
이것은 파이썬 문서에서 찾을 수 있습니다 : http://docs.python.org/library/os.html
사용하십시오 os.rename
. 그러나 두 파일의 전체 경로를 함수에 전달해야합니다. a.txt
바탕 화면에 파일이 있으므로 이름을 바꾼 파일도 모두 제공해야합니다.
os.rename('C:\\Users\\Desktop\\a.txt', 'C:\\Users\\Desktop\\b.kml')
import os
# Set the path
path = 'a\\b\\c'
# save current working directory
saved_cwd = os.getcwd()
# change your cwd to the directory which contains files
os.chdir(path)
os.rename('a.txt', 'b.klm')
# moving back to the directory you were in
os.chdir(saved_cwd)
chdir()
는 UNC을 때 디렉토리로, 예를 들어, 어떤 Windows에서 어떻게됩니까? 그리고 chdir()
부작용이 있습니다. 차라리 필요한 경로를 os.rename()
직접 지정하고 싶습니다 chdir()
.
os.system을 사용하여 터미널을 호출하여 작업을 수행 할 수 있습니다.
os.system('mv oldfile newfile')
mv
파일을 이동 / 이름 바꾸기하는 유닉스 내장 명령 행 프로그램 과 마찬가지로 유닉스 기반 머신에서만 작동 합니다.
import os
import re
from pathlib import Path
for f in os.listdir(training_data_dir2):
for file in os.listdir( training_data_dir2 + '/' + f):
oldfile= Path(training_data_dir2 + '/' + f + '/' + file)
newfile = Path(training_data_dir2 + '/' + f + '/' + file[49:])
p=oldfile
p.rename(newfile)
os.path
을 현대식으로 혼합하는 pathlib
것은 상당히 유쾌합니다. pathlib
대신에 끝까지 가십시오 .