![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Mam sobie zainstalowany powerline-shell
Dodaje on ładny pasek zamiast standardowego PS1 PS wyświetla mi aktualnego brancha z Gita. Chciałem do tego dorobić pokazywanie ostatniego największego Taga z repo. Ale że nie znając Pythona nie za bardzo mi to wychodzi. Wyskrobałem coś takiego: Kod def get_git_last_tag(): currentTag = 0 output = subprocess.Popen(['git', 'tag'], env={"LANG": "C", "HOME": os.getenv("HOME")}, stdout=subprocess.PIPE).communicate()[0] for line2 in output.split('\n') if float(line2) > currentTag currentTag = line2 return currentTag Jednak wywala mi na tym: Kod for line2 in output.split('\n') split zwraca mi wynik, ale już for nie chce działać. W funkcji która jest wyżej zadeklarowana jest coś takiego (z tego czerpałem) Kod output = subprocess.Popen(['git', 'status', '--ignore-submodules'], env={"LANG": "C", "HOME": os.getenv("HOME")}, stdout=subprocess.PIPE).communicate()[0] for line in output.split('\n'): i to działa. Jakiś znawca? |
|
|
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 32 Pomógł: 4 Dołączył: 8.06.2007 Skąd: Wrocław Ostrzeżenie: (0%) ![]() ![]() |
Kod for line2 in output.split('\n') if float(line2) > currentTag currentTag = line2 Ten for jest niepytoniczny. Na końcu linii z for i if brakuje ":", zaś do rozbijania tekstu na listę linii używa się dedykowanej funkcji "splitlines()", nie "split("\n")". Tyle błędów widzę na pierwszy rzut oka. Ten post edytował rafio 31.10.2014, 18:08:21 -------------------- I twitr, meh and code.
|
|
|
![]()
Post
#3
|
|
![]() Grupa: Zarejestrowani Postów: 8 068 Pomógł: 1414 Dołączył: 26.10.2005 Ostrzeżenie: (0%) ![]() ![]() |
Hehe co się czepiasz
![]() ![]() Fakt : miałem wcześniej ale gdzieś mi się zapodziały. Po zmianie na splitlines udało się że się nie wywala. Ok wyczarowałem ![]() Kod def get_git_last_tag():
currentTag = 0 p1 = subprocess.Popen(["git", "tag"], stdout=subprocess.PIPE) p2 = subprocess.Popen(["sort", "-V"], stdin=p1.stdout, stdout=subprocess.PIPE) p1.stdout.close() # Allow p1 to receive a SIGPIPE if p2 exits. output,err = p2.communicate() lines = output.splitlines() if len(lines)>0: currentTag = lines[-1] return currentTag |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 24.06.2025 - 02:14 |