我是Python新手,并试图编写我的第一个程序。
我要做的是通过在输出中添加日期来修改windows tracert命令输出。
c:\Python\Codes>more tr.py
import os
import time
print (time.strftime("\nDate: %d %B %Y"))
os.system('tracert')
c:\Python\Codes>tr.py 127.0.0.1
Date: 09 March 2018
Usage: tracert [-d] [-h maximum_hops] [-j host-list] [-w timeout]
[-R] [-S srcaddr] [-4] [-6] target_name
Options:
-d Do not resolve addresses to hostnames.
-h maximum_hops Maximum number of hops to search for target.
-j host-list Loose source route along host-list (IPv4-only).
-w timeout Wait timeout milliseconds for each reply.
-R Trace round-trip path (IPv6-only).
-S srcaddr Source address to use (IPv6-only).
-4 Force using IPv4.
-6 Force using IPv6.
c:\Python\Codes>但是,Python中的tracert命令没有正确执行。
这正是我所期待的。
c:\Python\Codes>tr.py 127.0.0.1
Date: 09 March 2018
Tracing route to 127.0.0.1
over a maximum of 30 hops:
1 <1 ms <1 ms <1 ms 127.0.0.1
Trace complete.
c:\Python\Codes>请告诉我怎么解决这个问题。谢谢。
发布于 2018-03-09 07:47:50
您还没有将python参数传递给tracert,所以tracert建议您提供一个参数(例如"127.0.0.1")
最简单的方法是修改代码,再做两件事。
sys模块:sys.argv中有一个数组,它包含脚本参数。tracert。您可以在+运算符中使用字符串连锁。以下是一个简单的改变:
import os
import time
import sys
print (time.strftime("\nDate: %d %B %Y"))
os.system('tracert' + ' ' + sys.argv[1])注意,我必须在对tracert的调用和参数之间添加一个空格。我特意叫了它,让你看到它,但你也可以用最后的空格调用'tracert '。
在这里,运行在我的Mac上(它有traceroute,但想法是一样的):
[mjl@milo:~/hax]
[18:42](hax)$ python tr.py 127.0.0.1
Date: 09 March 2018
traceroute to 127.0.0.1 (127.0.0.1), 64 hops max, 52 byte packets
1 localhost (127.0.0.1) 0.312 ms 0.077 ms 0.043 ms
[mjl@milo:~/hax]
[18:42](hax)$一个(稍微)更好的方法是使用subprocess
import subprocess
import time
import sys
print (time.strftime("\nDate: %d %B %Y"))
subprocess.run(["tracert",sys.argv[1]])现在,您不必在命令之后添加一个空格。但是,必须将命令及其所有参数作为数组中的元素提供给subprocess.run()。
注意:-这些代码中没有一个进行任何错误检查。如果您在没有参数的情况下运行tr.py,它将给出一个错误:
[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 rangehttps://stackoverflow.com/questions/49188087
复制相似问题