IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.
Mezi 13:00 až cca 16:00 proběhne odstávka sítě z důvodu aktualizace. Web bude po celou dobu nedostupný.

Diskuze: python subprocess.call

Aktivity
Avatar
František S.:24.3.2021 21:11

Dobrý den,
Jsem python newbie a prosím o radu stran deklarace subprocess.chec­k_output. Konkrétně mi jde o otevření Windows command liny, vložení do ní dost dlouhého řetězce, který pošle dotaz na query do databáze a o načtení odpovědi. Jde mi o přesný tvar deklarace, kterého se v manuálu nedočítám. Používám ofiko zdroj: https://docs.python.org/…process.html#…

Předem moc děkuji.

Zkusil jsem: ve Windows command lině použiju:
im issues --user=myUsername --password=myassword --hostname=abc.def.cz --port=1234 --batch --queryDefiniti­on='((field[Ty­pe]=Requiremen­t)and(field[Sta­te]=something)an­d(field[Projec­t]=/pqr/stu)an­d(item.meanin­gful)and(item­.live)and(fiel­d[Tag List]="Some Tag"))' --fieldsdelim="|"
a dostanu odpověď.

Toto (přesně) se tedy snažím vložit i do deklarace subprocesu:

import subprocess
import cmd

subprocess.chec­k_output("cmd", ([im issues --user=myUsername --password=myassword --hostname=abc.def.cz --port=1234 --batch --queryDefiniti­on='((field[Ty­pe]=Requiremen­t)and(field[Sta­te]=something)an­d(field[Projec­t]=/pqr/stu)an­d(item.meanin­gful)and(item­.live)and(fiel­d[Tag List]="Some Tag"))' --fieldsdelim="|"], shell=True))

Mám však nějaký syntax error.

Chci docílit: Na volání command liny vyvolané pythonem z query databáze dostat odpověď.

Editováno 24.3.2021 21:12
 
Odpovědět
24.3.2021 21:11
Avatar
Pavel
Člen
Avatar
Pavel:25.3.2021 12:40

Tohle nefunguje:

query = '--queryDefinition=\"((field[Type]=Requirement)and(field[State]=something)and(field[Project]=/pqr/stu)and(item.meaningful)and(item.live)and(field[Tag List]="Some Tag"))\"'

command = ['im', 'issues', '--user=myUsername', '--password=myassword', '--hostname=abc.def.cz', ' --port=1234', '--batch',
                    query, '--fieldsdelim="|"']

subprocess.check_output(command, shell=True)
Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
25.3.2021 12:40
Avatar
František S.:28.3.2021 19:27

Dobrý den!
Konkrétně tuto možnost jsem nemohl použít, protože delimiter bylo nutné označit právě uvozovkami. Ale řešení nakonec bylo jednoduché, trojité úvoozovky, tedy:

"""command_line = """im issues --user=myUsername --password=mypassword --hostname= ... --fieldsdelim="|"
"""

Moc děkuji za správný syntax a Vaši pomoc.

 
Nahoru Odpovědět
28.3.2021 19:27
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 3 zpráv z 3.