sys.argv
to są argumenty uruchomieniowe, jeden z poziomów przekazywania danych do uruchamianych procesów. Kiedy startujesz proces, może mu przekazać między innymi takie dane:
- Listę argumentów uruchomieniowych
- Dane na wejście standardowe (również znane jako "standard input", albo "stdin")
- Przechwycić zwracane dane ze standard output oraz standard error (również znane jako "stdout" i "stderr")
- Zmienne środowiskowe
W różnych językach inaczej odczytuje się argumenty uruchomieniowe, w javie to będzie np public static void main(String[] argv)
, podobnie w C#, w PHP będzie to $argv
, a w pythonie mamy sys.argv
.
Jeśli chcesz sprawdzić jak działają, to napisz sobie taki plik test_args.py
z treścią:
Kopiuj
import sys
for arg in sys.argv:
print("Kolejny argument to: ")
print(arg)
I uruchom go w taki sposób
Kopiuj
python test_args.py to jest "mój test"
Zobaczysz coś takiego:
Kopiuj
C:\Users\Riddle> python test_args.py to jest "mój test"
Kolejny argument to:
test.py
Kolejny argument to:
to
Kolejny argument to:
jest
Kolejny argument to:
mój test
C:\Users\Riddle>
W większości systemów operacyjnych nazwa pliku jest przekazywana jako pierwszy argument argumentów uruchomieniowych.
Po prostu chcę skorzystać z dwóch zmiennych. W głównym programie nam zmienną self.PRINT_E_NEW
i self.PRINT_V_NEW
i chcę je wyprowadzić do skryptu.
Nie odbierzesz żadnych danych, których Twój program nie przekazał. Możesz zrobić print(sys.argv)
żeby zobaczyć wszystkie przekazane argumenty.
Innymi słowy - nie w odczytywanie sys.argv
jest Twój problem, tylko w miejscu w którym spawnujesz swój proces. Musisz pokazać więcej kodu tego który uruchamia Twój skrypt.