如何在python脚本中获得.txt格式的命令提示符输出?
我在python脚本中使用此代码如何在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
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文件,它会有所不同。