Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?

[Python] Wynik z wiersza poleceń (windows)

Ostatnio zmodyfikowano 2018-11-02 18:34
Autor Wiadomość
Jah00
Temat założony przez niniejszego użytkownika
[Python] Wynik z wiersza poleceń (windows)
» 2018-10-31 21:38:58
Witam, piszę pewien program w pythonie i potrzebuję dostać uniwersalną (uniwersalną, chodzi mi o to że po odpaleniu programu na innym sprzęcie program pobierze właściwą ścieżkę dla danego komputera) ścieżkę do folderu appdata. Z pomocą internetu udało mi się napisać coś takiego:

C/C++
import subprocess

out = subprocess.Popen([ 'echo', '%appdata%' ], shell = True, stdout = subprocess.PIPE )
stdout = out.communicate()
print( stdout )

Co zwraca:
C/C++
( b 'C:\\Users\\jm\\AppData\\Roaming\r\n', None )

Mam kilka pytań co do tego,

1. Czy jest jakaś prostsza metoda na uzyskanie wyniku z cmd do zmiennej?
2. Co oznaczają i dlaczego występują te znaki na końcu i na początku (np. b', \r, None)?
3. W jaki sposób wyodrębnić tą ścieżkę od tych znaków, pamiętając że jej długość może być różna (np. zależy od wersji językowej lub nazwy użytkownika), w pythonie jestem nowy i jedyne co znam to wyodrębnienie za pomocą [liczba:liczba] jednak tu nie pomoże.
P-172730
Jah00
Temat założony przez niniejszego użytkownika
Rozwiązanie
» 2018-11-02 18:34:08
Poradziłem sobie z problemem, użyłem prostszej funkcji run() (działa w pythonie od 3.5 w górę), która po rozkodowaniu na utf-8 zwraca czystą ścieżkę w formacie str.

C/C++
import subprocess

x = subprocess.run([ 'echo', '%appdata%' ], shell = True, stdout = subprocess.PIPE ).stdout.decode( 'utf-8' )
print( x )


Co zwraca
    : C:\U sers\jm\AppData\Roaming

Zamykam, napisałem rozwiązanie, może komuś się przyda.
P-172735
« 1 »
  Strona 1 z 1