<blockquote>
<p>I've done some research and it seems that the sys.argv might require an argument at the command line when running the script</p>
</blockquote>
<p>并非<em>可能</em>,但<strong>肯定需要</strong>。这就是<code>sys.argv</code>的全部要点,它包含命令行参数。与任何python数组一样,访问不存在的元素会引发<code>IndexError</code>。</p>
<p>尽管代码使用<code>try/except</code>来捕获一些错误,但有问题的语句出现在第一行。</p>
<p>因此脚本需要一个目录名,您可以通过查看<code>len(sys.argv)</code>并与1+个需求进行比较来测试是否有目录名。argv始终包含脚本名和用户提供的任何参数,通常以空格分隔,但用户可以通过引号覆盖空格分隔。如果用户不提供参数,则您的选择是提供默认值、提示用户或打印退出错误消息。</p>
<p>要打印错误并在缺少参数时退出,请在首次使用sys.argv之前添加此行:</p>
<pre><code>if len(sys.argv)<2:
print "Fatal: You forgot to include the directory name on the command line."
print "Usage: python %s <directoryname>" % sys.argv[0]
sys.exit(1)
</code></pre>
<p><code>sys.argv[0]</code>始终包含脚本名,用户输入放在后面的插槽1、2、。。。</p>
<p>另见:</p>
<ul>
<li><a href="https://stackoverflow.com/questions/4117530/sys-argv1-meaning-in-script">sys.argv[1] meaning in script</a></li>
<li><a href="http://www.pythonforbeginners.com/system/python-sys-argv" rel="nofollow noreferrer">http://www.pythonforbeginners.com/system/python-sys-argv</a></li>
</ul>