<p>当您编写<code>term + course</code>时,Python直接连接<code>term</code>和{<cd3>}中的字符串,直到<code>os.path.join()</code>看到它们。也就是说,如果<code>term == "fall2013"</code>和{<cd6>},那么{<cd7>}之间没有任何东西。在</p>
<p>一种解决方法是在术语和课程之间插入一个显式的斜杠,如<code>term + "/" + course</code>。但是,由于您可能已经被指示使用<a href="http://docs.python.org/2/library/os.path.html#os.path.join" rel="nofollow">^{<cd4>}</a>(无论如何,这是一个好主意),您只需将要连接到它的路径组件作为单独的参数传递给<em>所有</em>,并让它为您负责连接它们:</p>
<pre><code>path = os.path.join(term, course, "exams")
</code></pre>
<p>另外,对于你的作业,以及对好的Python编码的一些建议:</p>
<ul>
<li><p>虽然<a href="http://docs.python.org/2/library/getopt.html" rel="nofollow">^{<cd10>}</a>模块实际上并不像注释中的rtrwalker声明那样被弃用,但是使用<a href="http://docs.python.org/2/library/argparse.html" rel="nofollow">^{<cd11>}</a>可能会更好,除非出于某种原因(比如说,赋值告诉您)使用<code>getopt</code>。</p></li>
<li><p>你的代码看起来很重复。重复代码是一个<a href="//en.wikipedia.org/wiki/Code_smell" rel="nofollow">"smell"</a>,它应该表示需要一个循环,可能如下所示:</p>
<pre><code>dirs = ("assignments", "examples", "exams", "lecture_notes", "submissions")
for folder in dirs:
path = os.path.join(term, course, folder)
os.makedirs(path)
</code></pre></li>
</ul>