Кто-нибудь может мне помочь? Я пытаюсь вызвать выполнение jar из python, например:
def process_DBF():
logging.info('starting Java...')
csv_file='mycsvfile.csv'
proc=subprocess.Popen(["java", "-jar","./external/DBFtoCSV.jar",file_name,csv_file],stdout=subprocess.PIPE,stderr=subprocess.PIPE,
shell=False)
(output,err)=proc.communicate()
p_status=proc.wait()
print('Status:')
print(p_status)
print('Output:')
print(output)
print('errors:')
print(err)
return csv_file
Но когда эта функция завершается sh, созданный CSV-файл является неполным, как если бы процесс java не имел Я закончил. Это происходит, когда я использую входной файл размером более 80 МБ, и происходит только в том случае, если я вызываю банку из python.
Если я вызываю банку из терминала, она работает правильно и создает полный csv:
java -jar external/DBFtoCSV.jar myfile.DBF myfile.csv
[main] INFO DBFtoCSV - Fields...12
[main] INFO DBFtoCSV - Records...951627
[main] INFO DBFtoCSV - Writing data...
[main] INFO DBFtoCSV - Written: 951627 of 951627 records.
[main] INFO DBFtoCSV - Created file: myfile.csv
Я пытался использовать модуль подпроцесса и ждать, пока процесс завершится sh, но не работает.
Кто-нибудь может предложить мне возможное решение?