如何将具有特殊字符的文件名从磁盘读取到FileField中?

时间:2019-06-02 21:10:49

标签: python django

在我的Django应用中,我正在将YouTube视频下载到MEDIA_ROOT内的某个文件夹中。

我还将视频文件下方的下载文件与模型的FileField关联起来。

当视频标题包含一些特殊字符时,会出现问题。例如,“白痴测试-90%失败”将被保存到磁盘中,而%已删除,因此,通过视频标题将此文件与模型相关联时,我会收到一个错误消息,指出该文件不存在,因为我正在传递原始视频标题(不是从磁盘读取的视频标题)到包含FileField的{​​{1}}。

我该如何解决?我应该首先去除任何特殊字符的视频标题吗?但是随后,我需要迎合不同操作系统所允许的功能。有更好的解决方案吗?

%

1 个答案:

答案 0 :(得分:0)

我建议查看正则表达式

解决方案如下:

import re
video_title = re.escape(video_title)
downloaded_path = pytube.download(sampler_settings.AUDIO_PATH, video_title)
downloaded = File(open(downloaded_path, 'rb'))
...

文档here

让我知道这是否适合您:)