Я написал программу, которая читает файл CSV и выводит содержимое в качестве вставных операторов. Затем я написал программу выполнения, в которой должен взять вывод программы анализатора CSV и записать его в .txt-файл, но вместо того, чтобы писать весь вывод, он записывает только первый оператор.Запись вывода программы Python в файл .txt
Вот код для исполнителя:
import sys
with open('insert.txt', 'wb') as f:
subprocess.check_call(["python", "CSVParserMultiple.py"], stdout=f)
И код парсера:
import csv, os
path = 'C:/Users/user/Desktop/test/'
for file in os.listdir(path):
if file.endswith('.csv'):
# print ('Parsing file: ' + os.path.basename(path + file))
openFile = open(path + file)
csvFile = csv.reader(openFile)
getHeader = next(csvFile)
columnHeaders = map((lambda x: "'" + x + "'"), getHeader[:-1])
insert = 'INSERT INTO testing (' + "'ID', 'VehicleID', " + ', '.join(columnHeaders) + ') VALUES '
for row in csvFile:
values = map((lambda x: "'" + x.strip() + "'"), row[:-1])
print (insert + "(" + ", ".join(values) + ");")
openFile.close()
Я не совсем уверен, что это имеет смысл, чтобы иметь их как две отдельные программы но я не мог заставить их работать как определенные функции в одной программе для жизни меня. Как я могу заставить программу выполнения выводить все строки программы парсера вместо одной строки? И как я могу объединить их в одну программу?
Вы должны поместить эти операции в функции. Если вы хотите иметь возможность повторно использовать модули и вызывать их из других сценариев, вам необходимо установить их, создав пакет/модуль python. –
Вызов файла python через подпроцесс довольно нелепо. Не делай этого. Если вам нужно * отделить его, а другая функция недостаточно хороша, создайте [собственный модуль] (https://docs.python.org/3/tutorial/modules.html) –
Не уверен почему в выходном файле появляется только первая строка. Но чтобы объединить два сценария, просто поместите оператор 'with open' во второй скрипт, а затем используйте' f.write ('something \ n') 'вместо' print'. –