문제

I'm writing a script to change all of the .mp3, .m4a and .m4p files in the directory './itunes and music/F14/' to another title. I'm able to get the filenames, and using hsaudiotag I can get the title tag. However, when I try to rename the file to the title tag it give me the error:

WindowsError: [Error 2] The system cannot find the file specified

Here's my code:

from hsaudiotag import auto
import os

def main():
    for filename in os.listdir('./itunes and music/F14/'):
        print(filename)
        os.rename(filename, filename[2:])
        myfile = auto.File('./itunes and music/F14/'+filename)
        print(myfile.title)
        if filename.endswith(".mp3"):
            print('3')
            os.rename(filename, myfile.title+".mp3")
        elif filename.endswith(".m4a"):
            print('4a')
            os.rename(filename, myfile.title+".m4a")
        elif filename.endswith(".m4p"):
            print('4p')
            os.rename(filename, myfile.title+".m4p")

main()

All of the print statements are just to debug, and they all are working properly. It's just the os.rename() function that isn't.

도움이 되었습니까?

해결책

Specify file path, not just filename.

from hsaudiotag import auto
import os

def main():
    d = './itunes and music/F14/'
    for filename in os.listdir(d):
        print(filename)
        filepath = os.path.join(d, filename)
        os.rename(filepath, filepath[2:])
        myfile = auto.File(filepath)
        print(myfile.title)
        if filename.endswith(".mp3"):
            print('3')
            os.rename(filepath, os.path.join(d, myfile.title+".mp3"))
        elif filename.endswith(".m4a"):
            print('4a')
            os.rename(filepath, os.path.join(d, myfile.title+".m4a"))
        elif filename.endswith(".m4p"):
            print('4p')
            os.rename(filepath, os.path.join(d, myfile.title+".m4p"))

main()
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top