当前位置: 首页 > 知识库问答 >
问题:

用于Traceroute和打印文件输出的Python脚本在Linux Mint中显示错误(OSError:[Errno 2]没有这样的文件或目录)

万勇
2023-03-14

我正在尝试使用python脚本对 google.com 执行跟踪路由,并将输出写入文件即输出.txt

如果我直接使用subprocess.call('traceroute','google.com'),它工作得非常好,输出会打印在屏幕上。因为我想把输出放在文件中,所以我正在使用

子流程。Popen(["tracert ",'-w ',' 100 ',hostname),stdout =子进程。管道,stderr =子进程。STDOUT)

,然后将管道数据写入文件。但是,我在此行中遇到错误,即操作系统错误:[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()    

错误:

回溯(最近一次呼叫):

文件“./scr3.py”,第 87 行,位于跟踪路由 () 中

TraceRoute TraceRoute=子流程中的文件“./scr3.py”,第76行。Popen([“tracert”,'-w','100',主机名],stdout=subprocess.PIPE,stderr=subpprocess.stdout)文件“/usr/lib/python2.7/subprocess.py”,第710行,在init errread,errwrite中)

文件“/usr/lib/python 2.7/subprocess . py”,第1327行,in _execute_child引发child_exception

OSError:[Errno 2]没有这样的文件或目录

如何解决这个问题?我一直坚持这一点。请帮忙

共有1个答案

佟翰林
2023-03-14

很确定它应该是traceroute而不是tracert。tracert是一个windows命令,您也可以使用iterstdout.readline来读取输出:

traceroute = subprocess.Popen(["traceroute", '-w', '100',hostname],stdout=subprocess.PIPE, stderr=subprocess.STDOUT)

for line in iter(traceroute.stdout.readline,""):
    print(line)
 类似资料:
  • 问题内容: 我有几个运行良好的python脚本,但是如果我尝试从bash运行它,一个脚本(截至今天上午)开始给我这个错误: : 无此文件或目录 我可以通过运行“破损”脚本并四处查看后,发现我的总体思路是,我的hashbang的行尾已更改(无提示),因此我查看了工作脚本的行尾并通过VI中的选项破坏了脚本,如该问题所示->在文本文件中查看行尾 两个文件似乎都以相同的字符(a )结尾,因此我对如何从此处

  • 问题内容: 我想在我的一个golang控制器中指定一个html模板。我的目录结构是这样的 我想为请求/ new加载first.html。我已经将NewHandler用于url / new,并且当/ new请求到达并且在controller.go中时,NewHandler函数正在执行。这是我的代码 但是我遇到一个错误 请帮助我删除此错误。提前致谢 问题答案: 我已经通过提供html的绝对路径解决了这

  • 问题内容: 我正在使用Ubuntu 14.04。我有以下代码: 但我不断收到以下错误: python程序和图像都在同一位置。可能是什么问题? 问题答案: 您需要安装:

  • 我在节点Js中工作。当我尝试加载文件时:moviedata.json,如下行: 显示: 错误:ENOENT:没有这样的文件或目录,打开'./moviedata.json'在错误(本机)在Object.fs.open同步(fs.js:640: 18)在Object.fs.readFileSync(fs.js:508: 33)在对象。(/用户/dortiz/文档/NodeJS/pruebas/zw/a

  • 为了解决需要对GitHub示例中的代码进行哪些特定的更改? 对的请求的控制台输出将触发上面的express.js方法,反复导致错误: 新的指定express.js是: 除了之外,GitHub示例应用程序中的所有其他内容都与您在GitHub上看到的内容相同,它只包含支持和中更改的依赖项,如上图所示。

  • 当我尝试在CMD中执行此操作时 我收到这个错误: 当文件存储在 (get-pip.py) C:\Python27\工具\脚本