windows - kalder en batch-fil i python udføres ikke korrekt

Indlæg af Hanne Mølgaard Plasc

Problem



Dette er mit første indlæg, og jeg er meget grøn med kodning i Python.
Min hensigt er at kalde en batch-fil, der skal udføres fra et Python-script.


Jeg har gjort min due diligence med forskning, og opdaget
call () metode med biblioteket: (fra subprocess import call) og
os.system () metode med biblioteket: (import os)


Her er nogle detaljer:
1. Når jeg kører batch script manuelt, udfører den hver linje af kode som forventet.
2. Når jeg kalder batch scriptet fra Python med en af ​​de to ovennævnte metoder, udføres en del af batchfilen.


Her er koden i batch scriptet:


@ECHO OFF
ECHO "test" >> file.txt
PAUSE


Her er koden til Python-scriptet ved hjælp af metoden os.system ()


import os

runfile = "C:\Data\Automation\Test\run.bat"
os.system(runfile)
print("Hello World")


Nu, når jeg kører batch script manuelt, er en fil skrevet til mit drev som (file.txt) som forventet.


Men når jeg kører Python scriptet, udføres hele koden i batchfilen bortset fra 'ECHO' testen '>> file.txt'


Og hvad der virkelig er interessant er, at i PyCharm vises Batch File-output i mit statusvindue! Dens som koden i batchfilen integrerer på en eller anden måde indersiden af ​​Python. Og det vises ikke kun, men det er også muligt at interagere med det!


Så her er alle trin:
1. Kør Python Script
2. Ring til BatchScript
3. PROBLEM: File.txt skrives ikke til disk
4. Output 'Tryk på en vilkårlig tast for at fortsætte.' ' i Python status vinduet
5. Tryk på Enter
(Retur til færdiggørelsen af ​​resten af ​​Python-koden)
6. Output 'Hello World' i Python status vinduet


Som du kan se er problemet:
Manuel udførelse af batch scriptet forårsager filen.txt, der skal skrives
hvor udførelse af python script ikke skriver filen.txt til disken


Jeg håber, at dette er en del detaljer, der kan hjælpe med at præcisere, hvad problemet kan være.


Tak så meget for at hjælpe med med dette, hele din tid og indsats er meget værdsat !!! =)

Bedste reference


Jeg ville spekulere på, hvad din nuværende arbejdsmappe faktisk er på det tidspunkt, hvor Python script starter .bat script. Angiv, at file.txt skal oprettes i samme mappe som .bat-fil scriptet, eller angiv den fulde sti til en anden mappe.


@ECHO OFF
ECHO "test" >>"\%~dp0file.txt"
PAUSE


eller


@ECHO OFF
ECHO "test" >>"\%USERPROFILE\%file.txt"
PAUSE