2017-04-19 8 views
0

검색 중 일부를 수행했지만 이것을 실제로 코딩하는 방법을 알 수 없습니다. 필자는 파이썬을 처음 접했고 실제로 어떤 방법을 사용해야하는지 잘 모릅니다.파일 이름 부분을 제거합니다.

이름을 바꿀 파일이 있습니다. 불행하게도 파일 확장자 부분은 결코 같지 않고 그냥 제거하려고합니다. 불길 (공식 비디오)에서 다운 샷 - -

파일 이름 AC_DC처럼 UKwVvSleM6w .MP3

어떤 도움을 주시면 감사하겠습니다.

+0

regex'- (\ w *) .mp3'를 사용하면 제거 할 부분 문자열에 대한 일치 항목을 찾을 수 있습니다. 그리고 [os.rename] (https://docs.python.org/3/library/os.html#os.rename)을 사용하여 새로운 이름으로 파일 이름을 바꿉니다. – smitrp

답변

0

youtube-dl의 결과처럼 보이기 때문에 "임의"하위 문자열이 고유 한 비디오 ID 일 가능성이 높습니다. 내 경험상 항상 11 자입니다. 그러나 대시 (-)를 포함 할 수 있으므로 smitrp가 제안한 정규식 접근 방식이 항상 작동하지는 않습니다.

나는이 "더러운"해결 방법을 사용 :

>>> original_name="AC_DC - Shot Down In Flames (Official Video)-UKwVvSleM6w.mp3" 
>>> new_name=original_name[:-16]+".mp3" 
>>> new_name 
'AC_DC - Shot Down In Flames (Official Video).mp3' 

편집 :

당신이 정말로, 가 정말는 "-xxxx"-portion을 찾으려면이 str.rfind()를 보라. 이렇게하면 마지막 대시 (-)의 색인을 찾을 수 있습니다.이 색인은 문자열의 조각 표기법에 직접 사용할 수 있습니다.

면책 조항 :

잘못된 결과를 제공 할 것입니다, 비디오 ID가 대시를 포함하는 경우, 예를 들어, 여기에 : https://www.youtube.com/watch?v=7WVBEB8-wa0

다음 마지막 대시를 찾을 수 -wa0 제거하고 -7WVBEB8 파일 이름 끝에 남겨 두십시오.

+0

도움을 주셔서 감사합니다. '-'을 찾아서 거기에서 제거하는 방법이 있다면 궁금합니다.import os debug = True os의 루트, dirs, 파일 이름에 대해 .walk (폴더) : 파일 이름에 대한 파일 이름에서 : fullpath에 = os.path.join (루트, 파일 이름) filename_split = os.path.splitext (fullpath에) filename_zero, fileext = filename_split 경우 디버그 : 인쇄 (filename_zero [: -16] + fileext) else : os.rename (fullpath, filename_zero [: - 16] + fileext) –

+0

헤이 @JamieSpake, 나는 내 대답을 연장. –