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

时间:2019-06-25 10:32:03

标签: python

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

4 个答案:

答案 0 :(得分:1)

尝试使用var subpy = require('child_process').spawn('path_to_flask_exe'); 方法:here

在Python中,特别方便的是,您可以使用open子句来包围此方法。

答案 1 :(得分:1)

使用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()

编辑:

如果您使用的是Python 2.7,则可以使用subprocess.check_output

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

答案 2 :(得分:1)

假设您有一个简单的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;
}

编译C程序将为您提供可执行文件,在我们的情况下,它称为a.out。命令./a.out将运行可执行文件并打印到文件。

现在让我们假设我们在同一文件夹中有一个Python脚本。为了执行C程序并读取文件,您必须执行以下操作

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)

编辑 如果您想遵循以下原则,请记住:

  1. 这是循序渐进的Linux方法。我对Windows知之甚少,但我假设可执行文件的运行方式有所不同。我确定你知道如何。
  2. 如果您的文件位于不同的文件夹中,则需要指定文件的路径,而不仅仅是文件名。

答案 3 :(得分:0)

无法完成此操作,因为在命令提示符下未跟踪将要生成的.txt文件。我们只能使用 subprocess 来获取cmd日志输出,这是其他答案所建议的。因此,我们可以使用生成的文件的路径和全名来访问生成的文件,因为它的命名遵循某种模式并且位置是固定的,所以我们知道

generated_text_file = original_file_name+"_some_addition.txt" with open(generated_text_file, 'r') as file1: s = file1.read().replace('/n','')