Python 3.x 使用两个串联字符串时FileNotFoundError:[WinError 3]

Python 3.x 使用两个串联字符串时FileNotFoundError:[WinError 3],python-3.x,Python 3.x,在将一个或多个字符串作为文件名的一部分进行连接时,我在创建目录时遇到问题。例如: DIR = r"D:/My/Directory" classes = ['itemA', 'itemB'] for item in classes: for scope in ["training/", "testing/"]: os.mkdir(os.path.join(DIR, scope + item)) 创建错误: FileNotFoundError:[WinError 3]系

在将一个或多个字符串作为文件名的一部分进行连接时,我在创建目录时遇到问题。例如:

DIR = r"D:/My/Directory"
classes = ['itemA', 'itemB']


for item in classes:
    for scope in ["training/", "testing/"]:
        os.mkdir(os.path.join(DIR, scope + item))
创建错误:

FileNotFoundError:[WinError 3]系统找不到路径 明确规定: 'D:/My/Directory\\training/itemA'


当我不使用
scope+项时,
os.mkdir
会起作用,但当我使用
scope+项时,它会抛出此错误。我不确定函数处理
training/itemA
trainingitemA
的方式有什么不同,当它们都被解释为字符串文字时。

Windows上的路径分隔符是
\
而不是
/
,您也可以使用
os.path.join
再次将
范围
加入
项目

DIR=r“D:\My\Directory”
类别=['itemA','itemB']
对于类中的项目:
对于[“培训”、“测试”]中的范围:
mkdir(os.path.join(DIR、scope、item))

在尝试创建子目录之前,还要确保父目录(例如
D:\My\Directory\training
)存在,或者使用
os.mkdirs
而不是
os.mkdir
(另请参见)。

您是否在windows上使用正斜杠(
//code>)?他们不应该后退吗?我没有使用windows,但这似乎不对。谢谢!工作得很有魅力!澄清一下:对于训练和测试,是否有比使用
os.mkdir(os.path.join(DIR,'train'))
更好的方法,然后必须循环?您的意思是创建父级和子级?是的,您可以使用
os.mkdirs