NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

Diskuze: python subprocess.call

Jak se ti líbí článek?
Před uložením hodnocení, popiš prosím autorovi, co je špatněZnaků 0 z 50-500
Jak se ti kurz líbí?
Tvé hodnocení kurzuZnaků 0 z 50-500
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.