Python makedirs无法创建目录,因为它包含问号

Python makedirs无法创建目录,因为它包含问号,python,Python,有人创建了一个很棒的脚本来下载视频供个人使用,这是他们的TOS允许的。但是,当脚本尝试基于标题名创建目录时,由于标题中有问号“”,它会创建一个错误。Windows不允许在目录名中使用特殊字符。有没有办法告诉makedirs忽略特殊角色 Traceback (most recent call last): File "D:\nick.py", line 91, in <module> main() File "D:\nick.py", line 88, in main

有人创建了一个很棒的脚本来下载视频供个人使用,这是他们的TOS允许的。但是,当脚本尝试基于标题名创建目录时,由于标题中有问号“”,它会创建一个错误。Windows不允许在目录名中使用特殊字符。有没有办法告诉makedirs忽略特殊角色

Traceback (most recent call last):
  File "D:\nick.py", line 91, in <module>
    main()
  File "D:\nick.py", line 88, in main
    episode.download()
  File "D:\nick.py", line 37, in download
    os.makedirs(dirname)
  File "C:\Users\*****\AppData\Local\Programs\Python\Python38\lib\os.py", line 223, in makedirs
    mkdir(name, mode)
OSError: [WinError 123] The filename, directory name, or volume label syntax is incorrect: "The Crystal Maze\\What's The Sign For Winning?"
回溯(最近一次呼叫最后一次):
文件“D:\nick.py”,第91行,在
main()
文件“D:\nick.py”,第88行,主目录
插曲下载()
下载文件“D:\nick.py”,第37行
os.makedirs(dirname)
makedirs中的文件“C:\Users\***\AppData\Local\Programs\Python\Python38\lib\os.py”,第223行
mkdir(名称、模式)
OSError:[WinError 123]文件名、目录名或卷标语法不正确:“水晶迷宫\\获胜的标志是什么?”

您可以使用以下行删除符号:

''.join([i for i in name if i.isalnum() or i.isspace()])
对于我上面写的内容,您必须在源代码中更改
dirname

os.makedirs(dirname) # in line 37, in download
它将另存为名称,但不包含符号:

Out[58]: 'The Crystal Maze Whats The Sign For Winning'

你好你能出示你的密码吗?我需要知道您使用的是什么版本的python,以及哪些库。谢谢你可以自己编辑它-
os.makedirs(dirname.replace(“?”,“"”)
@Peter谢谢你的快速回复。我不是开发人员。所以我不知道该添加哪一行。在第223行,我看到了这样的信息:`mkdir(name,mode)`我是否要用你的建议替换这一行?这确实有效,因为它也在处理文件名和副标题文件名。请参见新错误:``回溯(最近一次调用):文件“D:\download2.py”,第91行,在main()文件“D:\download2.py”中,第88行,在main eposion.download()文件中“D:\download2.py”,第48行,在下载自我中。下载项目(url,os.path.join(dirname,title))文件“D:\download2.py”,第24行,在下载项目中,打开(output+”.ttml”,“w”,encoding=“utf-8”)作为文件:OSError:[Errno 22]无效参数:“水晶迷宫\\获胜的标志是什么?\\获胜的标志是什么?”?S1.ttml“``我想那应该是名为
download
”的文件中的第37行。搜索
os.makedirs(dirname)
Yes第37行:`def download(self):name=self.name.name.replace(“/”,“”)if''):name=name[name.index(“)+1:name.rindex(“)]dirname=os.path.join(self.show.name,name)if不是os.path.isdirname(dirname):os.makedirs(dirname)`那么它应该是这样的吗?`def download(self):name=self.name.replace(“/”,“”)if-in-name:name=name[name.index(“”)+1:name.rindex(“”)]dirname=os.path.join(self.show.name,name)if-not-os.path.isdir(dirname):os.makedirs(“”.join(“.join([i-for-i-in-in-in-in-in-in-in-in-if-i.isalnum()或i.isspace()))`显然还有更多……因为它也与文件名和字幕文件名有关……最新错误:``回溯(最近一次调用):文件“D:\download2.py”,第91行,在main()文件“D:\download2.py”,第88行,在main-eposion.download()文件“D:\download2.py”,第48行,在下载自我中。\下载项目(url,os.path.join(dirname,title))文件“D:\download2.py”,第24行,在“下载”项中,打开(output+”.ttml,“w”,encoding=“utf-8”)作为文件:OSError:[Errno 22]无效参数:“水晶迷宫\\获胜的标志是什么?\\获胜的标志是什么?S1.ttml``查看代码: