выполнение файла .jar из python3 .7 не работает должным образом, но вызов из терминала работает нормально - PullRequest
0 голосов
/ 28 апреля 2020

Кто-нибудь может мне помочь? Я пытаюсь вызвать выполнение 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, но не работает.

Кто-нибудь может предложить мне возможное решение?

...