Portál AbcLinuxu, 10. května 2025 15:54
os.system(path) subprocess.call(path, shell=True)Díky za pomoc.
Řešení dotazu:
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)
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)
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
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)
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.
subprocess.call(path, shell=False)
subprocess.call([path])
shell=False
je default.
subprocess.call(['copy', filepath1, filepath2])
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
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
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)
supr ;D
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.