Używanie skryptów wsadmin w języku Jython
Język Jython jest alternatywną implementacją języka Pythoni jest napisany w całości w języku Java™.
Narzędzie wsadmin używa języka Jython V2.1. Poniższe informacje stanowią podstawowe podsumowanie składni języka Jython. We wszystkich przykładowym kodzie notacja => na początku wiersza reprezentuje dane wyjściowe komendy lub funkcji.
Podstawowa funkcja
Funkcja jest nazwą wbudowanej funkcji lub funkcją Jython. Na przykład następujące funkcje zwracają łańcuch "Hello, World!" jako dane wyjściowe:
print "Hello, World!"
=>Hello, World!
import sys
sys.stdout.write("Hello World!\n")
=>Hello, World!W tym przykładzie program print identyfikuje standardowy strumień wyjściowy. Wbudowanego modułu można użyć, uruchamiając instrukcje importu, takie jak poprzedni przykład. Import instrukcji uruchamia kod w module jako część importowanego obiektu i zwraca obiekt modułu. sys jest wbudowanym modułem języka Python . W języku Python moduły są obszarami nazw, które są miejscami, w których tworzone są nazwy. Nazwy, które znajdują się w modułach, są nazywane atrybutami. Moduły odpowiadają plikom, a język Python tworzy obiekt modułu, który będzie zawierał wszystkie nazwy zdefiniowane w pliku. Innymi słowy, moduły są obszarami nazw.
output =
AdminControl.invoke(mbean)), a następnie użyć wartości print output. Użyj komendy języka Jython print , aby przekształcić łańcuchy zawierające poprawnie przetłumaczone znaki NLS.Zmienna
Aby przypisać obiekty do nazw, cel przypisania znajduje się po pierwszej stronie znaku równości (=), a obiekt, który jest przypisywany po drugiej stronie. Celem po pierwszej stronie może być nazwa lub komponent obiektu, a obiekt po drugiej stronie może być wyrażeniem arbitralnym, które oblicza obiekt. W przypadku przypisywania obiektów do nazw istnieją następujące reguły:
- Przypisania tworzą odwołania do obiektów.
- Nazwy są tworzone podczas ich przypisywania.
- Przed odwołaniem się do niego należy przypisać nazwę.
Reguły nazw zmiennych są podobne do reguł języka C, na przykład nazwy zmiennych mogą mieć znak podkreślenia (_) lub literę plus dowolną liczbę liter, cyfr lub znaków podkreślenia.
- oraz
- Asercja
- podział
- klasa
- kontynuacja
- def
- del
- elif
- w przeciwnym razie
- z wyjątkiem
- exec
- w końcu
- dla
- od
- globalne
- jeśli
- import,
- w
- jest
- lambda
- nie
- lub
- Przekaz
- drukowanie
- podnieś
- powrót
- spróbuj
- while
Na przykład:
a = 5
print a
=> 5
b = a
print b
=> 5
text1, text2, text3, text4 = 'good', 'bad', 'pretty', 'ugly'
print text3
=> prettyDrugi przykład przypisuje wartość zmiennej a do zmiennej b.
Typy i operatory
Poniższa lista zawiera przykłady wbudowanych typów obiektów:
- Liczby. Na przykład:
8, 3.133, 999L, 3+4j num1 = int(10) print num1 => 10 - Łańcuchy. Na przykład:
'name', "name's", '' print str(12345) => '12345' - Listy. Na przykład:
x = [1, [2, 'free'], 5] y = [0, 1, 2, 3] y.append(5) print y => [0, 1, 2, 3, 5] y.reverse() print y => [5, 3, 2, 1, 0] y.sort() print y => [0, 1, 2, 3, 5] print list("apple") => ['a', 'p', 'p', 'l', 'e'] print list((1,2,3,4,5)) => [1, 2, 3, 4, 5] test = "This is a test" test.index("test") => 10 test.index('s') => 3
Na poniższej liście znajdują się przykłady operatorów:
- x lub y
y jest wartościowane tylko wtedy, gdy x ma wartość false. Na przykład:
print 0 or 1 => 1 - x i y
y jest wartościowane tylko wtedy, gdy wartość x jest prawdziwa. Na przykład:
print 0 and 1 => 0 - x + y, x-y
Dodawanie i konkatenacja, odejmowanie. Na przykład:
print 6 + 7 => 13 text1 = 'Something' text2 = ' else' print text1 + text2 => Something else list1 = [0, 1, 2, 3] list2 = [4, 5, 6, 7] print list1 + list2 => [0, 1, 2, 3, 4, 5, 6, 7] print 10 - 5 => 5 - x * y, x/y, x% y
Mnożenie i powtarzanie, dzielenie, reszta i format. Na przykład:
print 5 * 6 => 30 print 'test' * 3 => test test test print 30 / 6 => 5 print 32 % 6 => 2 - x [ i], x [ i:j], x (...)
Indeksowanie, wycinanie, wywołania funkcji. Na przykład:
test = "This is a test" print test[3] => s print test[3:10] => s is a print test[5:] => is a test print test[:-4] => This is a print len(test) => 14 - <, < =, >, > =, ==, < >,! =, nie jest
Operatory porównania, testy tożsamości. Na przykład:
L1 = [1, ('a', 3)] L2 = [1, ('a', 2)] L1 < L2, L1 == L2, L1 > L2, L1 <> L2, L1 != L2, L1 is L2, L1 is not L2 => (0, 0, 1, 1, 1, 0, 1)
Podstawienie ukośnika odwrot
Jeśli instrukcja musi obejmować wiele linii, można również dodać ukośnik odwrotny (\) na końcu poprzedniego wiersza, aby wskazać, że kontynuujesz następny wiersz. W przypadku znaku ukośnika odwrotnego nie należy używać spacji, a w szczególności znaków tabulacji lub spacji. Na przykład:
text = "This is a test of a long lines" \
" continuing lines here."
print text
=> This is a test of a long lines continuing lines here.Funkcje i zakres
def w celu zdefiniowania funkcji. Instrukcje dotyczące funkcji obejmują:def,returnInstrukcja
deftworzy funkcjęobjecti przypisuje ją do nazwy. Instrukcjareturnwysyła obiekt wynikowy z powrotem do programu wywołującego. Jest to opcjonalne, a jeśli nie jest obecne, funkcja kończy działanie tak, aby przepływ sterowania spadł z ciała funkcji.globalInstrukcja
globaldeklaruje zmienne na poziomie modułu, które mają być przypisane. Domyślnie wszystkie nazwy przypisane do funkcji są lokalne dla tej funkcji i istnieją tylko w czasie wykonywania funkcji. Aby przypisać nazwę w module obejmującym, należy wyświetlić listę funkcji w instrukcji globalnej.
Podstawowa składnia definiowania funkcji jest następująca:
def name (arg1, arg2, ... ArgN)
statements
return valuegdzie nazwa jest nazwą definiowanej funkcji. Po nim następuje nawias otwierający, nawias zamykający i dwukropek. Argumenty wewnątrz nawiasów zawierają listę parametrów do procedur. Następny wiersz po dwukropku jest organem funkcji. Grupa komend, które tworzą treść funkcji. Po zdefiniowaniu funkcji Jython jest ona używana tak samo jak dowolna z wbudowanych funkcji. Na przykład:
def intersect(seq1, seq2):
res = []
try:
for x in seq1:
if x in seq2:
res.append(x)
except:
pass
return resAby wywołać tę funkcję, należy użyć następującej komendy:
s1 = "SPAM"
s2 = "SCAM"
intersect(s1, s2)
=> [S, A, M]
intersect([1,2,3], (1.4))
=> [1] Komentarze
Komentuj w języku Jython z literą funta (#).
Argumenty wiersza komend
W powłoce Jython argumenty wiersza komend są przekazywane do skryptu jako wartość parametru sys.argv. W programie wsadmin w języku Jython nazwa programu lub skryptu nie jest częścią pliku sys.argv. W przeciwieństwie do narzędzia wsadmin w języku Jython, autonomiczny plik języka Jython pobiera plik skryptowy jako argument początkowy skryptu. Ponieważ sys.argv jest tablicą, należy użyć komendy index w celu wyodrębnienia pozycji z listy argumentów. Na przykład test.py przyjmuje trzy argumenty a, b i c.
wsadmin -f test.py a b cTreść produktu test.py :
import sys
first = sys.argv[0]
second = sys.argv[1]
third = sys.argv[2]
arglen = len(sys.argv)Podstawowe instrukcje
Istnieją dwie instrukcje w pętli: while i for. Instrukcja warunkowa to if. Instrukcja obsługi błędów to try. Na koniec, istnieją pewne instrukcje umożliwiające precyzyjne sterowanie przepływem sterowania: break, continuei pass.
- jeśli
Instrukcja
ifwybiera działania do wykonania. Instrukcjaifmoże zawierać inne instrukcje, w tym inne instrukcjeif. Po instrukcjiifmoże występować jedna lub większa liczba opcjonalnych instrukcjielif, a kończy się opcjonalnym blokiemelse.Ogólny format elementu, który wygląda następująco:
if test1 statements1 elif test2 statements2 else statements3Na przykład:
weather = 'sunny' if weather == 'sunny': print "Nice weather" elif weather == 'raining': print "Bad weather" else: print "Uncertain, don't plan anything"- while
Instrukcja
whileskłada się z wiersza nagłówka z wyrażeniem testu, treścią jednego lub większej liczby instrukcji i opcjonalną instrukcjąelse, która jest uruchamiana, jeśli sterowanie kończy działanie pętli bez wykonywania instrukcji break. Instrukcjawhilewielokrotnie uruchamia blok instrukcji wcięć, o ile test w wierszu nagłówka zachowuje wartościowanie prawdziwej wartości. Poniżej przedstawiono przykład plikuwhile:while test1 statements1 else statements2Na przykład:
a = 0; b = 10 while a < b: print a a = a + 1- dla
Instrukcja
forrozpoczyna się od wiersza nagłówka, który określa cel przypisania lub cele, wraz z obiektem, który ma zostać krok po kroku. Po nagłówku następuje blok instrukcji wciętych, które mają zostać powtórzone.Poniżej przedstawiono przykład instrukcji
for:for target in object: statements else: statementsPrzypisuje elementy w obiekcie sekwencji do celu, jeden po jednym, a następnie uruchamia dla każdej z nich treść pętli. Treść pętli zwykle używa celu przypisania w celu odniesienia się do bieżącego elementu w sekwencji, tak jakby był on krokowym kursorem przez sekwencję. Na przykład:
sum = 0 for x in [1, 2, 3, 4]: sum = sum + x- break, continue, and pass
Pętle można sterować za pomocą instrukcji
break,continueipass. Instrukcjabreakwyskakuje z najbliższego pętli enzamykających (obok całej instrukcji pętli). Instrukcjecontinueskakują do początku najbliższej pętli enzamykających (do wiersza nagłówka pętli), a instrukcjapassjest pustym obiektem zastępczym instrukcji.- spróbuj
Instrukcja podniesie błąd, jeśli zostanie wywołana z błędną liczbą argumentów, lub jeśli wykryje jakiś warunek błędu, który jest określony w jego implementacji. Nieprzechwycony błąd przerywa działanie skryptu. Instrukcja
tryjest używana do pułapowania takich błędów. Instrukcje Pythontryznajdują się w dwóch smakach, które obsługują wyjątki i jeden z nich uruchamia kod finalizacji, niezależnie od tego, czy występują wyjątki. Instrukcjatry,except,elserozpoczyna się od wiersza nagłówka, po którym następuje blok instrukcji z wcięciem, a następnie jeden lub więcej opcjonalnych instrukcji z wyjątkiem klauzul, które mają zostać przechwycony, oraz opcjonalnej klauzulielsena końcu. Instrukcjetry,finallysą uruchamiane z wierszem nagłówka try, po którym następuje blok instrukcji wcięć, a następnie klauzula finally, która zawsze działa w drodze wyjścia z wyjątku, niezależnie od tego, czy wystąpił wyjątek podczas działania bloku try.An example of
try,except,elsefunctions follows:try: statements except name: statements except name, data: statements else statementsNa przykład:
try: myfunction () except: import sys print 'uncaught exception', sys.exc_info() try: myfilereader () except EOFError: break else: process next line here
Ogólny format try i wreszcie wygląda następująco:
try statements finally statementsNa przykład:
def divide(x, y): return x / y def tester(y): try: print divide(8, y) finally: print 'on the way out...'
- Instrukcje są uruchamiane sekwencyjnie domyślnie. Instrukcje zwykle kończą się na końcu wiersza, na którym się pojawiają. Jeśli instrukcje są zbyt długie, aby zmieścić się w jednym wierszu, można również dodać ukośnik odwrotny (\) znajdujący się na końcu poprzedniego wiersza, aby wskazać, że kontynuujesz następny wiersz.
- Granice bloku i instrukcji są wykrywane automatycznie. W blokach kodu nie ma nawiasów klamrowych ani separatorów końcowych ani końcowych. Zamiast tego język Python używa wcięć instrukcji pod nagłówkiem w celu zgrupowania instrukcji w zagnieżdżonym bloku. Granice bloku są wykrywane przez wcięcie linii. Wszystkie instrukcje z wcięciem w tej samej odległości należą do tego samego bloku kodu, dopóki ten blok nie zostanie zakończony przez linię mniej wciętą.
- Instrukcje złożone = nagłówek; ':', wcięte instrukcje. Wszystkie instrukcje złożone w języku Python są zgodne z tym samym wzorcem: wiersz nagłówka zakończony dwukropkiem, po którym następuje jedno lub więcej zagnieżdżonych instrukcji w nagłówku. Wcięte instrukcje są nazywane blokiem.
- Spacje i komentarze są zwykle ignorowane. Spacje wewnątrz instrukcji i wyrażeń są niemal zawsze ignorowane (z wyjątkiem stałych łańcuchowych i wcięć), dlatego komentarze są ignorowane.
Wywoływanie skryptów przy użyciu innego skryptu
Użyj komendy execfile , aby wywołać skrypt Jython z innego skryptu Jython. Na przykład:
Utwórz skrypt o nazwie test1.py , który zawiera następujące elementy:
execfile('/temp/script/testFunctions.py')
print printName('Cathy', 'Smith')Utwórz skrypt o nazwie testFunctions.py , który zawiera następujące elementy:
def printName(first, last):
name = first + ' ' + last
return nameNastępnie należy przekazać następującą ścieżkę jako argument skryptu:
wsadmin -lang jython -f '/temp/script/test1.py'Jako separatora ścieżki należy użyć ukośników (/). Ukośniki odwrotne (\) nie działają.
Uruchamianie skryptów Jython, które korzystają z pakietów
W przypadku uruchamiania skryptów, które korzystają z pakietów, należy udostępnić narzędzie wsadmin ze ścieżką wyszukiwania dla skryptów Jython, które używają pakietów.
Aby udostępnić te informacje do narzędzia wsadmin, należy użyć następującej opcji podczas uruchamiania narzędzia:
-Dwsadmin.script.libraries.packages=path1;path2;...gdzie dir1 i dir2 reprezentują ścieżki wyszukiwania katalogów dla bibliotek zawierających pakiety Jython.