다음은 scenerio입니다. 디렉토리의 모든 음악 파일을 검색하고 해당 목록에 대한 사용자 입력을 검사하는 Windows 7 프로그램을 만들고 있습니다. 사용자가 선택한 노래를 재생할 수 있습니다. 트랙의 이름은 '01 name.mp3 '과 같이 번호가 매겨지기 때문에 새로운 목록에서'01 '부분을 제거하고 프로그램에'01 '을 기록하여 해당 부분에서 인식 할 수 있습니다. 새 목록을 만들고 파일을 시작하십시오. 즉, 프로그램이 숫자없이 파일 이름의 새 목록을 만들고 프로그램이 파일을 인식하게하고 숫자를 알게하여 파일을 시작하게합니다. 이것이 가능한가? 는 또한, 여기에 내 코드의 일부이다. (이 이해가되지 않는 경우에 저에게) :목록의 문자열에서 숫자를 제거하고 다시 검색하는 방법
def GetMediaFName(source, name):
for key, val in source.iteritems():
if val == name:
return key
newList = {}
media_list = []
for dirpath, dirnames, filenames in os.walk(music_dir) and os.walk(alt_music_dir1):
for filename in [f for f in filenames if f.endswith(".m4a") or f.endswith(".mp3") or f.endswith(".mp4")]:
media_list.append(os.path.join(dirpath, filename))
media_from_menu = menu[5:]
print(media_from_menu)
media_to_search1 = media_from_menu + ".mp3"
media_to_search2 = media_from_menu + ".wav"
media_to_search3 = media_from_menu + ".m4a"
media_to_search4 = media_from_menu + ".mp4"
for i in media_list:
spl = i.split('\\')[-1]
if spl is not None:
try:
tmp = re.findall(r'\d+',spl.split('.')[0][0])
newList.update({i:i.replace(tmp,"").strip()})
except Exception:
newList.update({i:spl})
itms = newList.keys()
for i in files:
tmp = re.findall(r'\d+',i.split('.')[0][0])
newList.update({i:i.replace(tmp,"").strip()})
print(newList)
print(GetMediaFName(newList, media_from_menu + ".mp3"))
Sory, 난 당신이 "01"의 부분에 대해 매우 분명 있다고 생각 해달라고 :
이 하위 디렉토리에있는 파일을 포함하여 특정 경로에 MP3 파일을 찾으려면 . 파일 이름에서 "01"을 제거 하시겠습니까? 아니면 파일 이름의 검색/읽기에서 해당 번호를 무시 하시겠습니까? – lealhugui죄송합니다, 편집하겠습니다! –
예제 "01 name.mp3"을 참조하여 사용자에게 "name.mp3"또는 "name"이라는 이름을 표시하지 않겠습니까? 또한 모든 음악 파일의 확장자는 동일한가요? – gboffi