<p>您没有将python shell参数传递给<code>tracert</code>,因此Windows <code>tracert</code>建议您提供一个参数(例如“127.0.0.1”)</p>
<p>最简单的方法是更改您的代码以执行另外两个操作</p>
<ol>
<li>获取提供给python脚本的shell参数。Python在<code>sys</code>模块中有一个数组:<code>sys.argv</code>,其中包含脚本参数。在</li>
<li>把它传给<code>tracert</code>。您可以将字符串连接与<code>+</code>运算符一起使用。在</li>
</ol>
<p>这里有个简单的改变:</p>
<pre><code>import os
import time
import sys
print (time.strftime("\nDate: %d %B %Y"))
os.system('tracert' + ' ' + sys.argv[1])
</code></pre>
<p>注意,我必须在tracert调用和参数之间添加一个空格。
我专门调用它是为了让您看到它,但您也可以只调用<code>'tracert '</code>,并在末尾加上空格。在</p>
<p>这是在我的Mac上运行的(它有<code>traceroute</code>,但想法是一样的):</p>
^{pr2}$
<p>一个(稍微)更好的方法是使用<code>subprocess</code>:</p>
<pre><code>import subprocess
import time
import sys
print (time.strftime("\nDate: %d %B %Y"))
subprocess.run(["tracert",sys.argv[1]])
</code></pre>
<p>现在您不必在命令后添加空格。但是必须将命令及其所有参数作为数组中的元素提供给<code>subprocess.run()</code>。在</p>
<p>在注:无对这些代码进行任何错误检查。如果不带参数运行<code>tr.py</code>,则会出现错误:</p>
<pre><code>[mjl@milo:~/hax]
[18:42](hax)$ python tr.py
Date: 09 March 2018
Traceback (most recent call last):
File "tr.py", line 5, in <module>
os.system('traceroute' + ' ' + sys.argv[1])
IndexError: list index out of range
</code></pre>