Я использую этот код os.system("dcapgen.exe C:\\Users\\folder\\a.dcap") в своем скрипте Python для запуска этой команды dcapgen.exe C: \ Users \ folder \ a.dcap . Эта команда создает файл .txt в своем текущем каталоге. Я хочу использовать этот сгенерированный файл .txt в своем коде. Как это сделать? Я не хочу вывод командного журнала. Благодарность! Я новичок в программировании на Python.

-1
vikram 25 Июн 2019 в 13:32

4 ответа

Лучший ответ

Это не может быть сделано, потому что .txt файл, который будет сгенерирован, не отслеживается в командной строке. мы можем получить только вывод команды cmd, используя подпроцесс , который предлагается другими ответами. таким образом, мы можем получить доступ к сгенерированному файлу, используя его путь и полное имя, которое мы знаем, потому что его именование соответствует некоторому шаблону, а местоположение фиксировано, например

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

0
vikram 28 Июн 2019 в 10:57

Используйте 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()

< Сильный > Edit:

Если вы используете Python 2.7, вы можете использовать subprocess.check_output:

out = subprocess.check_output(['dcapgen.exe', 'C:\\Users\\folder\\a.dcap'])
1
heemayl 25 Июн 2019 в 11:00

Предположим, у вас есть простая программа на 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. Если ваши файлы находятся в разных папках, вам потребуется указать путь к файлам, а не только имя файла.
1
Giacomo Casoni 25 Июн 2019 в 10:58