在Linux Mint中,用于traceroute并将输出打印到文件的Python脚本显示错误(OSError:[Errno 2]没有这样的文件或目录)。
在Linux Mint中,用于traceroute并将输出打印到文件的Python脚本显示错误(OSError:[Errno 2]没有这样的文件或目录)。
我正在尝试使用Python脚本在google.com上执行traceroute,并将输出写入文件output.txt。
如果我直接使用subprocess.call(\'traceroute\',\'google.com\'),它可以完美地工作,并且输出会打印在屏幕上。由于我想要将输出写入文件,因此我正在使用
subprocess.Popen([\"tracert\", \'-w\', \'100\', hostname],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
然后将管道数据写入文件。但是,在这一行中,我收到一个错误,即OSError:[Errno 2]没有这样的文件或目录。
代码:
import urllib import time import datetime, threading from bs4 import BeautifulSoup import urllib2 import subprocess import socket fp2=open("output.txt",'w') #This function will be executed after every x minutes def TraceRoute(): hostname="google.com" fp2.write(hostname+" : ") print(hostname) #subprocess.call(['traceroute',hostname]) traceroute = subprocess.Popen(["tracert", '-w', '100', hostname],stdout=subprocess.PIPE, stderr=subprocess.STDOUT) while (True): hop = traceroute.stdout.readline() if not hop: break print '-->',hop fp2.write( hop ) threading.Timer(60*50, TraceRoute).start() #Ensures periodic execution of TraceRoute( ) x=60*50 seconds TraceRoute()
错误:
Traceback (most recent call last):
File \"./scr3.py\",line 87,in TraceRoute()
File \"./scr3.py\",line 76,in TraceRoute
traceroute = subprocess.Popen([\"tracert\", \'-w\', \'100\', hostname],stdout=subprocess.PIPE,stderr=subprocess.STDOUT)
File \"/usr/lib/python2.7/subprocess.py\",line 710,in init
errread,errwrite)
文件“/usr/lib/python2.7/subprocess.py”,第1327行,_execute_child
raise child_exception
OSError:[Errno 2]没有这样的文件或目录
如何解决这个问题?我已经陷入了这个问题很久。请帮帮我。