使用线程时如何解决winerror32?
How to solve winerror32 while using threading?
我目前正在使用 python 从互联网上下载一个 mp4 文件,将其转换为 mp3,然后删除该 mp4 文件。我想一次 运行 这个过程 3,所以我使用了线程。但是,当我访问下载 mp4 的文件夹时,它给了我 winerror32。
我认为这是因为一个线程正在与另一个线程同时访问该文件夹。有没有办法强制线程一次访问一个文件夹?
我尝试使用锁一次只允许一个线程,但它不起作用
def download_multi(music,links,check,parent_file,default_filename,success,fail,total):
try:
lock = threading.Lock()
lock.acquire()
print(format(threading.currentThread().getName()))
print("Downloading- ", str(check), "/", total, default_filename + "...")
check += 1
lock.release()
# downloads first audio stream
music.download(parent_file)
# creates mp3 filename for downloaded file
new_filename = default_filename[0:-3] + "mp3"
print("\nConverting to mp3....")
# converts mp4 audio to mp3 audio
lock.acquire()
audioclip = VideoFileClip(os.path.join(parent_file, default_filename))
audioclip.audio.write_audiofile(os.path.join(parent_file, new_filename))
# print("Download finished.")
# end the video process
audioclip.close()
# erase mp4
if os.path.isfile(parent_file + "\" + default_filename):
os.remove(parent_file + "\" + default_filename)
print(default_filename + "delete complete\n")
# list that would be added to log file
success.append(default_filename)
lock.release()
except Exception as e:
print(e)
print("unable to download " + default_filename)
# list that would be added to log file
fail.append(default_filename)
pass
问题是我向方法传递了错误的参数。代码本身没有问题
我目前正在使用 python 从互联网上下载一个 mp4 文件,将其转换为 mp3,然后删除该 mp4 文件。我想一次 运行 这个过程 3,所以我使用了线程。但是,当我访问下载 mp4 的文件夹时,它给了我 winerror32。
我认为这是因为一个线程正在与另一个线程同时访问该文件夹。有没有办法强制线程一次访问一个文件夹?
我尝试使用锁一次只允许一个线程,但它不起作用
def download_multi(music,links,check,parent_file,default_filename,success,fail,total):
try:
lock = threading.Lock()
lock.acquire()
print(format(threading.currentThread().getName()))
print("Downloading- ", str(check), "/", total, default_filename + "...")
check += 1
lock.release()
# downloads first audio stream
music.download(parent_file)
# creates mp3 filename for downloaded file
new_filename = default_filename[0:-3] + "mp3"
print("\nConverting to mp3....")
# converts mp4 audio to mp3 audio
lock.acquire()
audioclip = VideoFileClip(os.path.join(parent_file, default_filename))
audioclip.audio.write_audiofile(os.path.join(parent_file, new_filename))
# print("Download finished.")
# end the video process
audioclip.close()
# erase mp4
if os.path.isfile(parent_file + "\" + default_filename):
os.remove(parent_file + "\" + default_filename)
print(default_filename + "delete complete\n")
# list that would be added to log file
success.append(default_filename)
lock.release()
except Exception as e:
print(e)
print("unable to download " + default_filename)
# list that would be added to log file
fail.append(default_filename)
pass
问题是我向方法传递了错误的参数。代码本身没有问题