Szkriptek: Python, Perl, Bash, ...

Python3 script furcsaság

Van egy egyszerű python3 scriptem a while ciklushoz, csak ennyi:

#!/usr/bin/env python3
while True:
s = input('Kérdés')

Elmentettem egy fájlba, amit futtathatóvá tettem.
Ha így futtatom:
python3 whilex.py akkor rendben lefut.
de ha így ./whilex.py akkor hibaüzenetet kapok, hogy nincs ilyen fájl vagy könyvtár.
Ez miért van? Egyszerűen nem értem mi a baja.

python --- kivételkezelés. IndexError és egyebek

Sziasztok.

Mark Summerfield Python3 c. remekműve előtt görnyedek és csak bámulok, hogy ezt a nyelvet miért nem a ZXSpektrumra találták ki régebben. Ezen kellett volna szocializálódnom.

Ha egy vagy több vezérlőszerkezetben semmiféle errorral nem akarom elszállítani a scriptemet, miket tehetek?

Jelenleg van egy while: -szerkezetem, amely indexhibával már nem száll el, mert beleraktam egy sort:


except IndexError:
 print('indexhiba, tovabb...')

Amint ezt beraktam a kódba, azóta ha egy sorban nem találja meg monjuk a 6. oszlopot, nem száll el, nem ír ki semmi hülyeséget csak a hibaüzenetet és veszi a következő sort.

-------
A kérdésem rövid.

Van még néhány error-lehetőség, mellyel még nem szállt el a python-script, de talán elszállhat.

EOFError
ValueError
KeyError
OSError
IOError

Ezek között talán a legutolsó érdekelhet még, ha esetleg már nem tud hova írni az adathordozóra a script.

Tehát ha abszolút paranoiásan nézem a dolgokat, hányféle errorkezelést érdemes beépíteni egy mezei scriptbe, amit nem akarok leállítani semmiképp se, hiszen folyamatosan kapja a feldolgozandó sorokat?

Elég az indexhiba és az IO-hiba?

[Megoldva] kisebb nagyobb feltétel - nem értem


#!/bin/bash
clear

echo 1 - 33
echo 2 - 34

if [[ 33 < 34 ]]; then
echo "az első szám a kisebb"
else
echo "A 2. szám a nagyobb"
fi
echo -e " \n \r"
echo 1 - 33.0.1990.58
echo 2 - 33.0.1990.115

if [[ 33.0.1990.58 < 33.0.1990.115 ]]; then
echo "az első szám a kisebb"
else
echo "A 2. szám a nagyobb"
fi

Az eredmény:
1 - 33
2 - 34
az első szám a kisebb

1 - 33.0.1990.58
2 - 33.0.1990.115
A 2. szám a nagyobb

Mind a kettő eredmény helyes, de ez így szvsz nem konzekvens. Miért nem egyformán írta ki hogy az első szám a kisebb?
Ez egy verzió ellenőrzéshez kell egy scriptben, s természetesen a nagyobb szám a jobb.

Tesztelőnek Python vagy Java

Sziasztok!

Sok év rendszergazdaság után (hardveres és Főleg Win, kevesebb Linuxx) 50+ useres cégnél, 40 felé közeledve nem szeretnék már asztal alatt bujkálni, és UTP kábeleket szerelni. Le is építettek a cégnél, van most munkám, de sajnos nem IT.
Közben megszereztem a Szoftver tesztelő (ISTQB) vizsgát és elkezdtem/elkezdenék programozást tanulni. 17-18 éve fősulin c-t és c++ -t tanultunk, de azóta nem sokat programoztam, legfeljebb php+html+css, a céges weblapok fejlesztésére, karbantartására. Persze nem kellene nulláról kezdeni, hogy mi a for ciklus, stb és az oop elveivel, módszerével is tisztában vagyok.

Szívesen elhelyezkednék tesztelőként, de nem tudom eldönteni, hogy melyik nyelvet tanuljam. A Pythonnal, vagy a Javaval tudnék jobban érvényesülni? Mi a véleményetek. Tudom, mindkettőt kellen, meg még vagy hármat, de egyszerre csak egyet szeretnék a munkám miatt.
Korábban 2 évet dolgoztam Kanadában, van még egy kis, azóta megkopott angol tudásom, ami feleleveníthető. Emiatt angol nyelvterületen is dolgoznék.

Vélemények?

Python objektum metódusok kezelése

Üdv!
Pythonban a dinamikus metódusok (tehát minden dekorátor nélküli, önreferenciával rendelkezők) lemásolódnak az objektumokkal együtt példányosításkor?
Tehát ha sok példány készül egy osztályról, akkor memória szempontjából hatékonyabb, ha a metódust kiveszem az osztályból és kívül definiálom? Vagy esetleg @staticmethod vagy @classmethod dekorátorral?
Köszi!

3 lehetőség

Mivel sajnos lassan 1 év eltelte után sem volt képes megoldani a Mandriva/Mageia/Rosa tárolók létrehozását a Vivaldi csapat, holott számtalanszor jeleztem már nekik a problémát, így készítenem kellet egy scriptet mely mindennap le ellenőrzi a csomagokat.
Eleddig simán működött is, de most belekerült a képbe a beta kifejezés, és ez most borította a scriptet annyiban, hogy hiába van meg a legfrissebb verziószám, a fájlnév megváltozott.
Jelenleg 3 lehetséges név közül választhatok.
vivaldi-beta
vivaldi-snapshot
vivaldi-preview

A script a verziószám ellenőrzésére alapul. A már telepített változat számát a $name-$name2 --version-nal kapom meg. Persze kell egy kis awk, mert nem csak simán a számot írja ki.

A behelyettesítés meg ezt dobja ki: vivaldi-snapshot-1.0.303.52-2.x86_64.rpm
Persze hogy nem jó.
Most egy subrutinnal megtudom mind a három legfrissebb csomag verzió számát. De itt elakadtam hogy azt hogy is érvényesítsem.
Tehát a subrutin eredményei a következők:

vivaldi-beta-1.0.303.52-2.x86_64.rpm
vivaldi-preview-1.0.219.50-1.x86_64.rpm
vivaldi-snapshot-1.0.303.48-1.x86_64.rpm

Most ebből kell megadnom hogy melyik települjön. A verziószám alapján a beta a legfrissebb.

Ha esetleg nem is így kéne kiindulnom, akkor itt a szerver és a szűrés:

name="vivaldi"
new_version=$(curl -ks https://repo.vivaldi.com/archive/rpm/x86_64/ | sed 's/.*href="//' | sed 's/".*//' | grep '^[a-zA-Z].*' | grep -v repodata | grep ${name}-${name2} | sort -r | head -n1

Próbálkoztam a fájlnév manipulálással ezen a módon: ${filename%%-*}" v1agy ${filename##--*} de ez nem jó.

Python evolúciós algoritmus párhuzamosítása

Sziasztok!

Írtam egy egyszerű evolúciós algoritmust, ami kb. így néz ki:
Populáció objektum egy lista típusú attribútumában sok Individual objektum van.
Populáció objektumnak van egy run() metódusa, ami levezényli a futást.

Szeretném a kódomat párhuzamosítani, hogy pl. minden processzormagon futtatni tudjak egy-egy populációt. Eddig még nem párhuzamosítottam, így valószínűleg infohiányos is vagyok.
A multiprocessing modullal próbálkoztam, írtam egy wrapper metódust, ami létrehozza a populáció objektumot és lefuttatja azt.
Létrehoztam a process-eket, minden process a wrappert hívja.

A kérdésem az, hogy egy ilyen populáció objektumot milyen shared memory object-tel tudnék kinyerni a subprocessekből miután lejárt a futás?

Köszi!

Fájl másolás és átnevezés lista alapján - Perlben, esetleg windows batch szkripttel

Segítségeteket kérném! Ne nevessetek ki, tudom, hogy alap, de sehogy sem boldogulok vele.

Van egy lista TXT fájlom, ami a következőképpen néz ki:

"aaa";"akarmi.jpg,valami.gif,megvalami.png"
"bbb";"fajl.jpg"
"ccc";"ezjokep.jpg,ezisjokep.png"

A feladatom az lenne, hogy átmásolni és egyben átnevezni a lista segítségével egy másik mappába a fenti fájlokat valahogy így:

aaa_00.jpg
aaa_01.gif
aaa_02.png
bbb_00.jpg
ccc_00.jpg
ccc_01.png

Előre is köszönöm!

Update1: Nincs speciális karakter, ékezet, vessző, pontosvessző a fájlnevekben.

Bash script mysql insert into on duplicate key update visszatérési érték

Sziasztok!

Szeretném a segítségeteket kérni! Adott az alábbi függvény egy bash scriptből:

function mysql_insert_or_update()
{
local ip=$1
local stat=1
mysql << EOF
INSERT INTO firewall.kontener (ip) VALUES (INET_ATON('$ip')) ON DUPLICATE KEY UPDATE ts=(NOW());
EOF
stat=$?
return $stat
}

mysql_insert_or_update $IP

Az lenne a kérdésem, hogy szerintetek az megoldható valahogy, hogy visszakapja a függvényből, hogy insert-ált vagy update-elt?

Vagy muszály lesz ketté szednem? PL.:

function mysql_insert()
{
local ip=$1
local stat=1
mysql << EOF
INSERT INTO firewall.kontener (ip) VALUES (INET_ATON('$ip'));
EOF
stat=$?
return $stat
}

function mysql_update()
{
local ip=$1
local stat=1
mysql << EOF
INSERT INTO firewall.kontener (ip) VALUES (INET_ATON('$ip')) ON DUPLICATE KEY UPDATE ts=(NOW());
EOF
stat=$?
return $stat
}

mysql_insert $IP || mysql_update $IP

Logolnom kell, hogy a script insert-ált vagy update-elt?
Felesleges mysql műveletet nem szeretnék végeztetni.

Előfordulhat, hogy rossz irányból közelítem meg a problémát!
Segítségeteket előre is köszönöm!