Portál AbcLinuxu, 10. května 2025 15:54

Dotaz: Problém s cestou která obsahuje mezeru a je uložená v proměnné

1.3.2020 19:52 jj
Problém s cestou která obsahuje mezeru a je uložená v proměnné
Přečteno: 814×
Odpovědět | Admin
Ahoj všichni, ;-)

jak můžu zavolat/spustit prosím jiný script z python scriptu když je v cestě mezera a ta cesta je v proměnné?

Zkoušel jsem kde co i třeba tohle
os.system(path)
subprocess.call(path, shell=True)

Díky za pomoc.

Řešení dotazu:


Nástroje: Začni sledovat (0) ?Zašle upozornění na váš email při vložení nového komentáře.

Odpovědi

Gréta avatar 1.3.2020 20:20 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin

v linuxu je potřeba mezeru escapovat to jako znamená nahradit ' ' timhletim '\ ' aby ji viděl jako znak jednoho toho samýho řetězce a ne jakoby dva různý :O ;D

de to udělat takhle nahrazením znaků ' ' znakama '\ ' ale asi bude existovat i nějakej lepší způsob si myslim ale nevim. tohleto funguje

import subprocess
import os

path="./nova slozka/skript.sh"
path=path.replace(" ","\ ")
subprocess.call(path, shell=True)

Zelená energetická soustava založená na obnovitelnejch zdrojích energie versus realnej svět 🤡🇪🇸
1.3.2020 21:08 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Díky, v Linuxu to jde ale ve Windows mi to nefunguje. Potřeboval bych to funkční pro obě Linux i Windows
Gréta avatar 1.3.2020 22:04 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné

mi fungovalo udělat z tý windowsí cesty raw string hele

jsem to ale testovala jen pod win7 tak nevim jestli se to jako bude u vyších verzí chovat stejně tak pozor :O :O

import subprocess
import os
 
path=r"C:\Users\Gréta\nova slozka\skript.bat"
subprocess.call(path, shell=True)
1.3.2020 22:25 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Ta moje proměnná 'path' se skládá ze spousta proměnných. které teprve naplní stringem tu proměnnou 'path'
path = path_1+"\\"+path_2+"\\"+"\\".join(arr_a)+"\\"+arr_b[23]
tak to mám použít takto?
subprocess.call(r'path', shell=True)
Díky
Gréta avatar 1.3.2020 22:57 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné

to fungovat nebude tam jakoby deklaruješ novej string o obsahu "path"

ale když už cestu sestavuješ takle ručně nepoběží ti to uplně normálně takle i s tou mezerou pod win??

path="C:\\Users\\Gréta\\nova slozka\\skript.bat"
subprocess.call(path, shell=True)
1.3.2020 23:01 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Nepoběží :-(, jelikož hledá místo souboru
C:\\Users\\Gréta\\nova slozka\\skript.bat
tento soubor
C:\\Users\\Gréta\\nova
Řešení 1× (Vladimír Čunát)
Jendа avatar 1.3.2020 23:00 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Odpovědět | | Sbalit | Link | Blokovat | Admin
Proč dáváš shell=True když ho nepotřebuješ? Bez toho je to argv pole kde je přímo cesta k souboru (a ty další prvky jsou parametry) a žádné shellové escapování nebudeš řešit.
1.3.2020 23:04 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Tak jak to mám napsat?
subprocess.call(path, shell=False)
Jendа avatar 1.3.2020 23:07 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
subprocess.call([path])
shell=False je default.
1.3.2020 23:21 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
To vypadá Jendo, že to asi funguje, musím otestovat pořádně, a když chci kopírovat soubor? Děkuji
subprocess.call(['copy', filepath1, filepath2])
Gréta avatar 2.3.2020 16:34 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné

todleto ti bude fungovat si myslim jenom v linuxu s příkazem cp jako subprocess.call(['cp', filepath1, filepath2]) ve win asi budeš muset jako použít misto pole ten jedinej string a argument shell=True

kopírování s mezírkama mi ve win fungovalo takhlenc

subprocess.call("copy orig.txt \"kopie s mezerama.txt\"",shell=True)

tomu shell true je ale prej dobrý se vyhnout vždykcky když se dá protože jako muže bejt dost nebezpečný hele :O :O

jestli ti ale jako de jenom o kopírování souborů tak jsou i nějaký hotový multiplatformní řešení v tom pythonu třeba shutil hele ;D

Gréta avatar 1.3.2020 23:19 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné

no jasně jako já to tam ve win cpu do subprocess.call bez toho argumentu shell=True proto mi to jede :O :O :O :O

1.3.2020 23:31 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
A spustí se ti ten dávkový soubor bat v novém terminálu?
Gréta avatar 1.3.2020 23:53 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné

to ne

jestli to jako chceš nechat běžet v jiným okýnku tak tohleto řešení by pod win mohlo jet

import os
import subprocess
from subprocess import CREATE_NEW_CONSOLE

path="C:\\Users\\Gréta\\nova slozka\\skript.bat"
subprocess.call([path], creationflags=CREATE_NEW_CONSOLE)

2.3.2020 00:29 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Díky moc, už se mi to taky spustí v novém okně, ale pořád to čeká na dokončení, proč? Chtěl bych to jen spustit a ať si to otevřené okno žije vlastním životem :-)
Jendа avatar 2.3.2020 01:03 Jendа | skóre: 78 | blog: Jenda | JO70FB
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
subprocess.Popen
2.3.2020 13:38 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Funguje, díky.
Gréta avatar 2.3.2020 16:35 Gréta | skóre: 37 | blog: Grétin blogísek | 🇮🇱==❤️ , 🇵🇸==💩 , 🇪🇺==☭
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné

supr ;D

5.3.2020 01:36 jj
Rozbalit Rozbalit vše Re: Problém s cestou která obsahuje mezeru a je uložená v proměnné
Díky ;-)

Založit nové vláknoNahoru

Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.