Python: brak podpowiedzi po kropce, control+spacja, TAB. Intellisense nie działa

2019-02-11

Dobre środowisko programistyczne w naszych czasach powinno „myśleć” razem z programistą. Ktokolwiek pracował w edytorze, który podpowiada ciąg dalszy nazw zmiennych, funkcji itp. ten wie o czym mówię. Dramat zaczyna się wtedy, kiedy te metody zawiodą!

I tak w Python IDLE zdarza się, że TAB nie działa

Tabulator działa, ale jego użycie może być trochę „tricky”. Zrób tak:

-napisz

tekst='Friday'

lub coś innego co spowoduje powstanie zmiennej tekstowej.

-zapisz plik

-uruchom go chociaż raz. Teraz w pamięci Pythona jest już informacja, że text jest zmienną typu tekstowego

-teraz wróć do edytora i napisz nazwę zmiennej i kropkę

text.

-teraz naciśnij tabulator. Powinny się pokazać funkcje specyficzne dla typu string

To jest super niewygodne kiedy chcesz to zrobić dla jednej zmiennej w banalnie prostym skrypcie. Ale kiedy piszesz dłuuuugi skrypt i uruchamiasz go dziesiątki razy, to Python jest świadomy wszystkich zmiennych i ładnie podpowiada.

Gdyby mimo to podpowiadanie nie działało, to jest jeszcze prawdopodobne, że coś poszło nie tak z intalacją i brakuje rozszerzenia odpowiadającego za podpowiadanie. Po wejściu do ustawień IDLE na zakładce Extensions można sprawdzić obecność rozszerzenia AutoComplete i ewentualnie sprawdzić czy jest włączone. Podobno pomaga reinstalacja pythona (zwróć uwagę na zaznaczenie [ ] Add Python to PATH)

 

 

 

By Rafał Kraik in Python

Python – oczyszczanie kolumny tekstowej w PANDAS (Seria danych)

2019-02-11

Załóżmy, że mam listę z wartościami prezentującymi liczby, ale z nieco zamieszanymi formatami. W oparciu o tą listę tworzę serię:

import pandas as pd
lst = ['112,000.000','4,500,000']
s = pd.Series(lst)
s
wynik to:
0    112,000.000
1      4,500,000
dtype: object

Jak widać typ to object, czyli w PANDAS – napis. Możesz teraz zbudować dowolną funkcję lambda oczyszczającą ten tekst:

s = s.apply(lambda x: x.replace(',',''))
s

wynik to nadal typ object, ale dane już przypominają liczby:

0    112000.000
1       4500000
dtype: object

teraz wreszcie można skonwertować typ do float

s = s.astype('float')
s

wynik to:

0     112000.0
1    4500000.0
dtype: float64

Kluczowe jest to, w jaki sposób tekst ma być oczyszczony – ale to już zależy też od rodzaju szumu, jaki został do tej kolumny kiedyś wprowadzony.

By Rafał Kraik in Python

Python: Nie można uruchomić skryptu z linii komend: Can’t find a default python

2019-01-11

Żeby z linii komend można było uruchamiać sktypty pythona bez podawania ścieżki do programu python.exe, najlepiej jest dodać katalog instalacji pythona do zmiennej środowiskowej PATH podczas instalacji:

Jednak, jeśli nie chcesz poprawiać instalacji, po prostu ręcznie zmodyfikuj ścieżkę. U mnie wygląda to tak:

Inna kwestia, to czy skrypty napisane w pythonie mają właściwą ikonkę i czy będzie je można uruchomić podwójnym kliknięciem.  Skojarzenie pliku z programem, który go uruchamia można ustawić w Start >> Ustawienia >> Default apps  i u mnie wygląda to tak:

 

 

By Rafał Kraik in SQL

Python: formatowanie tekstu

2019-01-11

W Pythonie mamy kilka sposobów na formatowanie tekstów, między innymi starszy z wykorzystaniem operatora % i nowy wykorzystujący metodę format. Jak to zwykle bywa nowsze metody pozwalają na wykonywanie większej ilości niestandardowych formatowań, niż te starsze. Część zadań można jednak realizować z wykorzystaniem obu metod – z porównywalnym efektem. Oto formatowanie napisu na 10 znakach z wyrównaniem do lewej lub do prawej:

print('%10s' % ('test'))  # align to right
print('%-10s' % ('test')) # align to left

print('{:>10}'.format('test'))  #align to right
print('{:10}'.format('test'))   #align to left

Więcej szczegółów zajdziesz tutaj:

https://pyformat.info/

A oto efekt:

By Rafał Kraik in Python

Bash: testowanie składni skryptu bez uruchamiania

2018-12-21

Podczas uruchamiania skryptu wyświetlił się komunikat o błędzie składni. Prosta sprawa – wystarczy znaleźć literówkę lub brakujący nawias. I tak rzeczywiście było.

Problem jednak pojawił się inny. Normalnie skrypt jest uruchamiany automatycznie i zawiera czynności, których nie można uruchomić ot tak sobie. Nie ma więc możliwości sprawdzenia, czy skrypt po poprawce jest już rzeczywiście dobry.

I tu z pomocą przychodzi opcja -n dla bash

bash -n script_file
  • Jeśli w skrypcie znajduje się błąd, to polecenie wyświetla komunikat o znalezionym błędzie
  • Jeśli skrypt nie ma błędów składniowych, nic nie jest wyświetlane

Oczywiście polecenie nie sprawdza, czy nie masz literówek w nazwach zewnętrznych programów, np. nie wykryje polecenia whoo jako błędnego. To pewnie literówka, ale opcja -n sprawdza tylko składnię. Ale to i tak całkiem nieźle, jeżeli chodzi o sprawdzenie jednej drobnej poprawki 🙂

Co ciekawe jest nawet strona, która pozwala sprawdzić skrypt online: Czytaj dalej »

By Rafał Kraik in Linuxy

Powershell: echo nie działa!

2018-12-19

Popatrz na taki skrypt:

function doSomething()
{
 param($times)

 $i = 0
 while ($i -lt $times)
 {
   echo "$i"
   $i++
 }
}

doSomething 3

Jeśli go uruchomisz, to wszystko działa jak należy. Funkcja jest wywoływana, polecenie echo wyświetla wyniki. Ale wystarczy drobna zmiana: Czytaj dalej »

By Rafał Kraik in Power Shell

Helpdesk: Pulpit zdalny: The connection cannot proceed because authentication is not enabled…

2018-12-13

Ustawienia RDP znacznie się zmieniły od czasów starusieńkiego Windows XP, gdzie zazwyczaj wystarczyło włączyć RDP i już! Teraz podczas połączenia sprawdzanych może być wiele komponentów, a cel jest jeden – zwiększone bezpieczeństwo. Sprawdzane jest bezpieczeństwo nawiązanego połącznia, testuje się czy komputer źródłowy i docelowy są tymi maszynami za które się podają i oczywiście sprawdza się, czy użytkownik, który sie łączy ma do tego uprawnienia.

W sieci domowej można czasami nieco odpuścić kwestie aż tak dokładnej weryfikacji wszystkich ustawień.

Jeżeli wiec przy nawiązywaniu połączenia widzisz komunikat:

Remote Desktop Connection
The connection cannot proceed because authentication is not enabled and the remote computer requires that authentication be enabled to connect.

to obejściem problemu może być wpisanie w rejestrze:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp
klucza “SecurityLayer” na 0

Oczywiście takie rzeczy tylko w bezpiecznej, przytulnej, domowej sieci 😉

By Rafał Kraik in Helpdesk