Hledáme nového kolegu do redakce - 100% home office, 100% flexibilní pracovní doba. Více informací.
Využij akce až 80 % zdarma při nákupu e-learningu - více informací. Zároveň pouze tento týden sleva až 80 % na e-learning týkající se Swift
discount week 80
Avatar
František S.:24. března 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. března 21:12
 
Odpovědět
24. března 21:11
Avatar
Pavel
Člen
Avatar
Pavel:25. března 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í
+1 bodů
Řešení problému
 
Nahoru Odpovědět
25. března 12:40
Tento výukový obsah pomáhají rozvíjet následující firmy, které dost možná hledají právě tebe!
Avatar
František S.:28. března 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. března 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.