
在使用moviepy进行视频处理时调用write_videofile方法保存视频文件时出现如下错误Traceback(most recent call last):FileVideo\VideoShuffleConcatenate\script.py,line361,inrun Filedecorator-gen-55,line2,inwrite_videofile Filemoviepy\decorators.py,line54,inrequires_duration Filedecorator-gen-54,line2,inwrite_videofile Filemoviepy\decorators.py,line135,inuse_clip_fps_by_default Filedecorator-gen-53,line2,inwrite_videofile Filemoviepy\decorators.py,line22,inconvert_masks_to_RGB Filemoviepy\video\VideoClip.py,line291,inwrite_videofile Fileproglog\proglog.py,line257,in__call__ Fileproglog\proglog.py,line350,incallback Filetqdm\std.py,line722,inwrite AttributeError:NoneTypeobjecthas no attributewrite从错误信息来看异常发生在tqdm进度条库中具体提示NoneType没有write方法说明tqdm进度条的输出流未正确设置导致None被调用write方法。解决方案调整tqdm的输出流moviepy依赖tqdm来显示进度条如果tqdm的输出流未正确初始化就会导致NoneType相关错误。可以在write_videofile方法中显式指定日志参数确保logger不是None并尝试如下代码frommoviepy.editorimportVideoFileClip clipVideoFileClip(your_video.mp4)clip.write_videofile(output_video.mp4,loggerbar,verboseTrue,progress_barTrue)如果不需要日志和进度条可以直接禁用loggerclip.write_videofile(output_video.mp4,loggerNone)部分moviepy版本可能存在 bug建议升级moviepy和tqdm确保使用最新版本pipinstall--upgrademoviepy tqdm某些环境如 Jupyter Notebook、远程服务器或特定 IDE可能会影响stdout导致tqdm无法正确写入。可以尝试在终端直接运行脚本或确保sys.stdout可用importsys sys.stdoutsys.__stdout__在尝试上述方法后运行write_videofile时不再出现NoneType相关错误视频文件成功生成。该问题通常由tqdm进度条的write方法在None变量上调用引起原因可能是stdout被重定向、环境问题或库版本问题。可以通过显式设置logger、更新moviepy和tqdm或调整运行环境来解决。