Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/macos/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在python脚本中获得.txt格式的命令提示符输出?_Python - Fatal编程技术网

如何在python脚本中获得.txt格式的命令提示符输出?

如何在python脚本中获得.txt格式的命令提示符输出?,python,Python,我在python脚本中使用此代码os.system(“dcapgen.exe C:\\Users\\folder\\a.dcap”)来运行此命令dcapgen.exe C:\Users\folder\a.dcap。此命令在其当前目录中生成.txt文件。我想在我的代码中进一步使用这个生成的.txt文件。如何做到这一点?我不想要命令日志输出。谢谢 我是python编程新手。尝试open方法: 在Python中,使用with子句围绕此方法尤其方便。使用subprocess.run运行命令并捕获STDO

我在python脚本中使用此代码
os.system(“dcapgen.exe C:\\Users\\folder\\a.dcap”)
来运行此命令dcapgen.exe C:\Users\folder\a.dcap。此命令在其当前目录中生成.txt文件。我想在我的代码中进一步使用这个生成的.txt文件。如何做到这一点?我不想要命令日志输出。谢谢
我是python编程新手。

尝试
open
方法:


在Python中,使用
with
子句围绕此方法尤其方便。

使用
subprocess.run
运行命令并捕获STDOUT以获取命令的输出:

proc = subprocess.run(['dcapgen.exe', 'C:\\Users\\folder\\a.dcap'], stdout=subprocess.PIPE, text=True)
现在,您可以从
STDOUT
属性获取STDOUT:

proc.stdout
您可能需要从末端剥离CR-LF:

proc.stdout.rstrip()

编辑:

如果您使用的是Python2.7,则可以使用
子流程。检查\u输出

out = subprocess.check_output(['dcapgen.exe', 'C:\\Users\\folder\\a.dcap'])

假设您有一个简单的C程序,它将“Hello World”写入名为
text.txt的文本文件,如下所示:

#include <stdio.h>
#include <stdlib.h>

int main(){
  FILE * fp = fopen ("text.txt","w");
  fprintf(fp, "Hello world\n");
  fclose(fp);
  return 0;
}
编辑 如果您想坚持到底,请记住:

  • 这是一种循序渐进的Linux方法。我对Windows知之甚少,但我假设可执行文件的运行方式有点不同。我相信你知道怎么做
  • 如果文件跨越不同的文件夹,则需要指定文件的路径,而不仅仅是文件名

  • 无法执行此操作,因为将生成的.txt文件未在命令提示符中跟踪。我们只能使用其他答案建议的子流程获得cmd日志输出。因此,我们可以通过使用它的路径和全名来访问生成的文件,因为它的命名遵循某种模式,并且位置是固定的,就像这样

    import os
    
    # Run the C generated executable
    os.system('./a.out')
    
    # At this point a `text.txt` file exists, so it can be accessed
    # The "r" option means you want to read. "w" or "a" for write and append respectively
    # The file is now accesible with assigned name `file` 
    with open("text.txt", "r") as file:
      file.read() # To get the full content of the file
      file.readline() # To read a single line
      for line in file: # Handy way to traverse the file line by line
        print(line)
    
    generated\u text\u file=original\u file\u name+“\u some\u addition.txt”
    打开(生成的文本文件“r”)作为文件1:
    
    s=file1.read()
    subprocess.run
    仅适用于python 3.5或更高版本。那么,就我而言,该怎么办?此外,我还必须进一步分析该txt文件,如搜索一些关键字等。我正在使用
    os.system(“DCAPTraceGen.exe%s”%os.path.join(r,file))
    将此命令应用于不同目录中的文件,现在我必须逐个分析这些txt文件。使用
    out=subprocess.check\u输出(['dcapgen.exe','C:\\Users\\folder\\a.dcap'])
    ,我们不会得到命令将生成的.txt文件,而是在命令提示符下输入该命令后得到的字符串日志。dcapgen.exe正在其当前目录中生成一个.txt,我想访问该文件,而不是它的日志。我无法将
    与open(“text.txt”,“r”)一起使用作为文件:
    ,因为我不知道生成的.txt文件名。对于不同的.dcap文件,它会有所不同。