Hirdetés

2024. május 9., csütörtök

Gyorskeresés

Hozzászólások

(#3501) axioma válasza axioma (#3499) üzenetére


axioma
veterán

hm lehagytam egy int-et [konvertalas]:
print(my_list[int(minoseg)])
bar szemely szerint inkabb az input-nal rogton konvertalnam

[ Szerkesztve ]

(#3502) Hege1234 válasza cousin333 (#3500) üzenetére


Hege1234
addikt

köszönöm! :R

háát most így elnézve, valóban vérzett :D

közben nekem is sikerült összehozni :)

def pick(options):
print("\nminőség kiválasztása:\n")

for idx, element in enumerate(options):
print("{} = {}".format(idx + 1, element))

i = input("\nírd ide a számot: ")
try:
if 0 < int(i) <= len(options):
return int(i) - 1
except:
pass
return None

options = ["1080", "720", "540", "480", "360"]
res = pick(options)

quality = options[res]
print(quality)

axioma:
köszi neked is!

bar szemely szerint inkabb az input-nal rogton konvertalnam
ezt kifejtenéd kicsit bővebben?
input-ot sokszor hasznánlom hátha későbbiekben hasznos lesz, ha egyből konvertálásra kerül

(#3503) axioma válasza Hege1234 (#3502) üzenetére


axioma
veterán

Az csak annyi hogy az i mar nem szoveg hanem szam lesz ha igy irod:
i = int(input("\nírd ide a számot: "))
A belso zarojelben kap egy stringet amit a kulso konvertal szamma, es azt ta'rolja.
Persze akkor a try-ban kene ez is legyen.
[Amugy ha hiba eseten return None, akkor irhatod a pass helyere.
Viszont a None-vel meg kivul bajod lesz, a try-catch lehetne a foprogram reszen, minden a try blokkban ami hasznalja az i-t - mert a hibas indexet is elkapja, except-ben meg hibauzenet.
Megjegyzem ha nem ragaszkodsz az enumerate-hez, akkor betennek egy dummy 0. elemet az options-be de csak 1-tol iratnam ki, akkor nem kell a valaszt tologatni; vagy ld. a korabbi dict-es megoldast a tombindex helyett.]
Mondjuk ha iskolai feladat akkor while ciklus kene amig nem lesz int, vagy egy megadhato 'break'.

[ Szerkesztve ]

(#3504) Hege1234 válasza axioma (#3503) üzenetére


Hege1234
addikt

köszi, hogy kifejtetted!
ez így már azért bonyolultan hangzik
ez arra kellene, hogy ne lehessen beírni pl. azt, hogy 15?

(#3505) axioma válasza Hege1234 (#3504) üzenetére


axioma
veterán

Mi a bonyolult, hogy hova keruljon a try? Az 'elore' int-eles nagyon megszokott, azt atveheted, de pont a tipustalansag miatt akar olyat is leirhatsz a bekeres utan, hogy i=int(i) [persze jobb lenne ans=input(...) es utana i=int(ans), ha mar kulonrakod, igy sokkal erthetobb-kovethetobb].
A try-ra pedig ha a 'foprogramban' nem baj hogy nem kezeled a None-t [megj. lehetne rossz valasz eseten ervenyes default is], akkor csak kozmetikai javitas. De tenyleg fugg attol, mi a kodkeszitesed celja [tananyagot kovetsz, valami meglevot akarsz sajat kutfobol szemelyre szabni, valami csak altalad hasznalt lesz es/vagy fix file-bol jon az adat nem 'eri meg' a rossz inputra felkeszulni - pl. prog.versenyeken is igy megy -, vagy valami tok mas]. Ezek fuggvenyeben jobban lehet a segitseget is kalibralni. En eddig inkabb ravezetni akartalak, nezd meg a hasznzlt kulcsszavakat mas kodban v. tutorialban.

[ Szerkesztve ]

(#3506) Hege1234 válasza axioma (#3505) üzenetére


Hege1234
addikt

def pick(options):
print("\nminőség kiválasztása:\n")

for idx, element in enumerate(options):
print("{} = {}".format(idx + 1, element))

while True:
try:
ans = input("\nírd ide a számot: ")
num = int(ans)
break
except ValueError:
print("ide csak számot írhatsz!")
continue

try:
if 0 < int(num) <= len(options):
return int(num) -1
except:
return None

options = ["1080", "720", "540", "480", "360"]
res = pick(options)

try:
quality = options[res]
print(quality)
except TypeError:
print("csak 1-5-ig írhatsz ide számot!")

beleírtam amit tanácsoltál és kiszedtem az i-t is
már csak számokat fogad el

azt pl. hogyan kell megoldani hogy ne léptessen ki, ha 0 van beleírva vagy pedig pl. 13?

semmi iskolai feladat vagy hasonló, kimondott tutorial-t sem követek
(persze, utánaolvasok a dolgoknak mit, hogyan kellene)

van egy kb 2500 soros .bat fájlom amit elkezdtem átírni python-ra
kombinálva tkinter-el szóval még sokminden idegen ezen a nyelven..

most csak annyi volt a célom, hogy egy beírt szám
meghatározott értékét
eljuttassam a subprocess-nek '+quality+'

subprocess.run([yt_dl, '--no-warning', '--no-check-certificate', '--allow-u', '-f', 'bv[height<='+quality+']', '--fixup', 'never', '-N', '16', '-o', video, mpd])

[ Szerkesztve ]

(#3507) axioma válasza Hege1234 (#3506) üzenetére


axioma
veterán

Jaaa, hogy meglevo batch helyett irod, akkor mar ertem hogy hogyan kerulhetett bele ciklus...
Szerintem kicsit osszevonom neked, szolj ha nem igy ertetted a "ne lepjen ki"-t:
   while True:
      try:
       ans = input("\nírd ide a számot: ")
         num = int(ans)
if 1<=num<=5:
           return num-1
print("csak 1-5-ig írhatsz ide számot!")
     except ValueError:
         print("ide csak számot írhatsz!")

Ez igy addig nem lep ki, es raadasul szelektiv hibauzenetet ad, amig nem jo erteket ir be a user. Igy viszont kilepni lesz nehez belole (jo, ctrl-c vagy ablak becsuk).
Termeszetesen ekkor mar nem kell a kulso try-except.
Me'g egy aprocska megjegyzes: ha a pick fuggvenyed ismeri az options-t, akkor nem sok ertelme van annak, hogy az indexszel tersz vissza, lehetne egybol az ertekkel (return options[num-1] es a quality=pick(options) is egyszerusodik).

Kiegeszites: ha me'gis dict-tel csinalnad akkor a szamot se kene kulon konvertalni es kulon vizsgalni, igaz kevesbe szelektiv hibauzenettel, de az egesz ide egyszerusodik:
def pick(options):
    print("\nminőség kiválasztása:\n")

   for idx, element in options.items():
       print("{} = {}".format(idx, element))

    while True:
      try:
          ans = input("\nírd ide a számot: ")
         return options[int(ans)]
     except ValueError,KeyError:
         print("ide csak 1-5 egész számot írhatsz!")

options = {1:"1080", 2:"720", 3:"540", 4:"480", 5:"360"]
quality = pick(options)
print(quality)

(azert nem megy tombbel, mert a pythonban - minden mas esetben udvozlendo modon - le'tezik a negativ indexeles, tehat ha tombbel csinalnad es IndexError-t varnal, akkor a 0 beirasa az 5-os erteknek felelne meg es hiba nelkul atmenne)
(Valamint a teljes konvertalas kikerulheto, ha a dict-nek a kulcsa az '2' alakban van megadva es nem 2 szamkent. Mondjuk a szamossal me'g az 1+1 input is ervenyes, ugy meg a '2 ' - plusz szokoz - se menne at... szoval azt nem javaslom. Anno ezeket ahol megoldhato nem inputtal - valasztott szam + enter -, hanem keyboard figyelessel oldottak meg, ott akkor 1 billt nez csak meg, mar amig nincs 10-nel tobb opciod.)

[ Szerkesztve ]

(#3508) sh4d0w


sh4d0w
nagyúr
LOGOUT blog

while True:
    ans = input('Kerem a szamot: ')
    num = int(ans)
    if num not in [1,2,3,4,5,0]:
        continue
    else:
        blablablablabla

https://www.coreinfinity.tech

(#3509) Hege1234 válasza axioma (#3507) üzenetére


Hege1234
addikt

nem kell, hogy ki tudjanak belőle lépni
(majd max bezárják abból kevesebb a gond :) )
ez így tökéletes, köszi a dict-es kiegészítést is a komplexebbekhez azt fogom használni
:R

lehet felsorolást tenni az expect után?
except ValueError,KeyError:

mert nekem erre hibát dobott
különszedve működött és az options= végén kicserélve } használva

egyébként bill figyelés is egy jó ötlet :K
mivel a batch fájlban a menük egérrel és bill-el is irányíthatóak
jó lenne ide python-ra is áthozni ezt a funkciót
bill kurzorokra találtam megoldást amivel lehet navigálni, de egérrel navigálást még nem
létezik erre megoldás?
mert a tkinter és hasonló társainak a konzolra nincs hatásuk

sh4d0w
ezt valahogy a dict-es példával és az előttivel
se tudtam működésre bírni

(#3510) axioma válasza Hege1234 (#3509) üzenetére


axioma
veterán

Nem futtattam csak nyersen irtam, typo siman lehet benne. Exception-re csak remlett hogy lehet, aktivan nem irkaltam ilyeneket csak max. copy-paste, de amugy itt van, tuple-kent lehet: [link] De ez csak az en lustasagom, szebb ha kulon van a hibauzenet a kulonbozo hibakra, nyilvan attol fugg hogy hol lesz hasznalva. [Ha log-ba menne, akkor ki kene iratni a hibauzenetben hogy mi volt az eredeti szoveges 'ans', akkor mar csak tudja a kodolo hogy az miert nem jo ott, ha nem kategorizalt a hibaszoveg akkor is.]
Az egerfigyelesrol gozom sincs, en bill.figyelest anno pascal csinaltam :) ebbol kitalalhatod a koromat (also korlatjat minimum).

[ Szerkesztve ]

(#3511) Hege1234


Hege1234
addikt

Üdv,

Hogyan kell azt megcsinálni, hogy
2 különböző subprocess feladat különböző txt fájlokból soronként olvasson?

eddig a google kereséseim a multiprocess-hez vezettek el, de az meg egyszerre
akarta a kettő folyamatot egyszerre megcsinálni
nekem fontos lenne, hogy ez a sorrend mindenképp így megmaradjon

1. subprocess "rálásson" a name.txt és az mpd.txt fájl 1. sorára
amikor végzett vele.
2. subprocess "rálásson" a key.txt és az mpd.txt fájl 1. sorára
amikor végzett vele.
1. subprocess "rálásson" a name.txt és az mpd.txt fájl 2. sorára
amikor végzett vele.
2. subprocess "rálásson" a key.txt és az mpd.txt fájl 2. sorára
és így tovább... olvassa a sorokat amíg van
max 15-20 sor van egy txt fájlban, de a pontos szám az változhat
ha számít akkor semmiképp se kerül bele 30nál több sor egy fájlba
és ilyenkor minden txt fájlban ugyanannyi sor van

kiegészítem egy kicsit, hogy ne forduljon elő újra, hogy kihagyok valamit mint a múltkor

1. subprocess
a name.txt -t kellene eljuttattani a végére ahol a video van
az mpd.txt -t pedig az mpd helyére

subprocess.run([yt_dl, '--no-warning', '--no-check-certificate', '--allow-u', '-f', 'bv[height<='+quality+'][vbr<30000]', '-S', '+codec:h264', '-o', video, mpd])

2. subprocess
a key.txt -t kellene oda eljuttattani ahol a *keys van
a name.txt -t kellene eljuttattani a végére ahol a video van

subprocess.run([mp4decr, *keys, video, videoout])

tisztában vagyok vele, hogy nagyon komplex kérdés lett
előre is köszi, akinek van valami ötlete, hogyan lehetne ezt így megvalósítani!

#3510 axioma
nekem bejön, hogy ennyire részletes python-ban a hibák kiírása
nem piszkálnám meg, ha továbbfutna magától (mint batch-ban) és nem állítja meg emiatt a programot
persze okés így is, hogy én határozom meg, hogy mit írjon ki hibaként
csak én meg nem vagyok annyira pedáns, hogy részletesen ismertessem a hibát mint ahogy azt alapból kiírja és
így ami nekem egyértelmű, ha másnak feldobná azt a hibát amit én csak skiccnek odaírtam az agybajt kapna..

(#3512) Hege1234 válasza Hege1234 (#3511) üzenetére


Hege1234
addikt

bármi tipp esetleg amin elindulhatnék?

(#3513) Oryctolagus


Oryctolagus
tag

udv!

now = datetime.now()
current_time = now.strftime("%Y%m%d%H%M")



van ket ilyen visszateresi ertekem:

ez az ertek egy adatbazisbol jon:
datum1= 202105071312

current_time = 202205021234

ebbol kellene egy integer erteket kovacsolni, de nem segit ezen sem a kave sem karomkodas orankent novelt szama sem.

kerlek benneteket segitsetek!

leirtam volna milyen type a ket ertek de valamiert nem irja ki :))

Per aspera ad astra.

(#3514) JoinR válasza Oryctolagus (#3513) üzenetére


JoinR
senior tag

Kicsit szét van esve ez a hsz, így nem értem mi a cél, de ha már dátum, akkor szerencsésebb lenne dátumként tárolni.
Pl.: current_time = datetime.strptime(current_time, "%Y%m%d%H%M")
Amúgy a kérdésre a válasz elvileg csak int(current_time) lenne, ha az érték stringként kerül a változóba az adatbázisból.

[ Szerkesztve ]

(#3515) Oryctolagus válasza JoinR (#3514) üzenetére


Oryctolagus
tag

na igen,

A két dátum különbségéből kellene egy integer.
A cél az lenne hogy egy if+Ben használni tudjam nagyobb vagy egyenlő a különbség( 30 nap)

Per aspera ad astra.

(#3516) JoinR válasza Oryctolagus (#3515) üzenetére


JoinR
senior tag

Így már értem. Szóval a datetime.now()-t nincs értelme olvasható stringre alakítani, maradjon így:
current_time = datetime.now()
Hanem a datum1-et alakítjuk át stringből datetime objectté:
datum1 = datetime.strptime(datum1, "%Y%m%d%H%M")
Így már használható velük a timedelta function összehasonlításra, pl:
if datum1 <= current_time - datetime.timedelta(days=30):
    ...

[ Szerkesztve ]

(#3517) Oryctolagus válasza JoinR (#3516) üzenetére


Oryctolagus
tag

Tudom ez nem sokat mond az egesz nelkul:
AttributeError: type object 'datetime.datetime' has no attribute 'timedelta'

Per aspera ad astra.

(#3518) JoinR válasza Oryctolagus (#3517) üzenetére


JoinR
senior tag

Na ki kellett volna próbálnom, mielőtt elküldöm sajnos a datetime esetén az elnevezésekbe könnyű belekeveredni, mert a module és a function neve is datetime. Érdemes csak 1-1 function-t importálni, és a datetime function-nek nevet adni (as dt)

Így tuti lefut:
from datetime import datetime as dt
from datetime import timedelta
datum1 = "202105071312"
current_time = dt.now()
datum1 = dt.strptime(datum1, "%Y%m%d%H%M")
if datum1 <= current_time - timedelta(days=30):
    print("Mukodik")

A datetime.timedelta(days=30) akkor működne, ha az egész module-t beimportálnád import datetime -mal, viszont akkor a többi sornál datetime.datetime.now() meg datetime.datetime.strptime(...) kellene, ami nem túl szép.

[ Szerkesztve ]

(#3519) sztanozs válasza JoinR (#3518) üzenetére


sztanozs
veterán

import datetime as dt
oszt kakukk

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3520) Oryctolagus válasza JoinR (#3518) üzenetére


Oryctolagus
tag

igy jo lett koszonom

Per aspera ad astra.

(#3521) Archttila válasza cousin333 (#3485) üzenetére


Archttila
veterán
LOGOUT blog

cousin333

Ma mar nem indult el az altalad irt (eddig tokeletesen mukodo) script. Megnezned nekem hogy mi lehet a gond? :R
Ezt kopi vissza:

[alucard@arch ~/.config/waybar/modules]$ ./weather.py
Traceback (most recent call last):
  File "/home/alucard/.config/waybar/modules/./weather.py", line 3, in <module>
    import requests
ModuleNotFoundError: No module named 'requests'

[ Szerkesztve ]

Passionate about minimalistic software, the Linux philosophy, and having fun. SFF enthusiast.

(#3522) sh4d0w válasza Archttila (#3521) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Oda van írva: nincs requests modul.

pip install requests - lehetőleg virtualenvben, ha van.

https://www.coreinfinity.tech

(#3523) Archttila válasza sh4d0w (#3522) üzenetére


Archttila
veterán
LOGOUT blog

A python-requests csomagot telepitettem, most mukodik! Koszonom! :R

Passionate about minimalistic software, the Linux philosophy, and having fun. SFF enthusiast.

(#3524) Angelotti


Angelotti
tag

Sziasztok!

Eléggé off lesz a kérdésem, hátha kapok rá választ. :)
Röviden annyi, hogy karrier váltáson gondolkodom, át szeretném képezni magam programozóvá. Egy ismerősöm a Green Fox-ot javasolta, de a Junior programozó képzés keretein belül ott semmit nem foglalkoznak Python-nal. (én meg úgy tudom ez a legmainstreamebb nyelvmost már egy ideje, a Java mellett).

A Ruander-nek viszont van kimondottan Python-os képzése. (náluk sincs a szoftverfejlesztői tanfolyamon belül python).

A kérdés az, hogy ha a megszerzett tudással ebben a szegmensben szeretnék elhelyezkedni érdemes e az elején Pythonra "specializálódni", vagy inkább kezdjek egy Junior szoftverfejlesztői tanfolyammal, amiben ugyan Python nincs, de Java viszont igen.

Köszi a váalszokat! :R

(*)(*)

(#3525) sztanozs válasza Angelotti (#3524) üzenetére


sztanozs
veterán

Nincs konkrét tapasztalatom, de ezekről a gyorstalpalókról általában nem sok jól hallani a fizetett reklámokon kívül.
Alapvetően ha van érzéked a programozáshoz, akkor jó lehet beugrónak, de ha nincs, akkor csak kidobott pénz lesz.

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3526) apezka válasza Angelotti (#3524) üzenetére


apezka
tag

Ha valóban komolyan gondolkozol a fejlesztői munkán akkor inkább Java, C# irányba indulj el. A python, egyenlőre még mindig inkább "egyszerű", gyors script-elésre elterjedt, ahol nincsenek keretrendszeri kötöttségek (bár pl. tesztautomatizálásban egyre több helyen használják már). De alapjában véve komolyabb fejlesztési igényeket még mindig és vélhetően még egy jó darabig valamelyik már bevált OO nyelven valósítják meg. Persze ettől függetlenül nem árthat python tudás.
A másik dolog viszont, hogy ha egy OO nyelvet megtanulsz profi szinten (ismered a már kész osztályit és esetleges gyengeségeit) vagy éppen csak azt, hogy hol tudsz utána nézni, akkor sokkal kisebb erő ráfordítással fogod megtanulni a második, illetve 3. programozási nyelvet.
A python jó, mindent is meg lehet vele csinálni, de nem ugyan arra való, mint a Java vagy C# (egyenlőre).

A tanfolyamok pedig olyanok amilyenk. Ha van érzéked a fejlesztéshez találni fogsz munkát a tanfolyam után. De igazából pár hónap alatt nem lesz az ember fejlesztő, jó pedig pláne nem. Inkább csak arra szolgál, hogy megmutatnak pár dolgot, amire az éppen aktuális partnernek szüksége van és a többi rajtad múlik. Igazából mutatnak egy irányt, ami rajtad múlik tetszik-e vagy sem.

A stressz akkor jön, amikor nincs kit pofán b...!

(#3527) axioma válasza apezka (#3526) üzenetére


axioma
veterán

Kezdoknel nem relevans, de az ML modellek kornyeken is python van. Aztan az infra kore altalaban mar nem abban keszul.

(#3528) Luxoros


Luxoros
lelkes újonc

Kedves Pythonosok!
Hogyan tudom az alábbi Tkinter programot [link] osztályban megírni. Eddig jutottam: [link]
A lényeg, hogy futtatáskor a fő ablak a tálcán marad, amig a Toplevel megnyílik és ebből lehet kattintásra a fő ablakot előhozni. Csak éppen osztályra nem tudom átültetni?! Köszi a segítséget.

Layco

(#3529) axioma


axioma
veterán

Mai [sot, mar hetek ota, csak azota megtudtam hogy meglepo helyen is hasznalatban van] agybaj: a Munkres algoritmus ahogy 'third party' lib-kent meg van irva... magyar modszer paros grafban de e'l-sulyokkal, es a minimalis osszerteku maximalis parositast keressuk. Reszben lehet, hogy a szerzo python2-vel kezdte ezert is randa [nem eleg pythonic] a kod, de nem csak az rontja, mar maga a ta'rolas is rossz design dontes, mert mindig keresgeti az infot N x N matrixban ahelyett h kiolvasna' egy masik [persze karbantartando] listabol...
Tud valaki erre letezo, valamennyire kiprobalt python kodot? Ertelemszeruen kobost keresne'k, nem N**4 idoigenyut.
[Igen, meg tudom irni, sot meg is irtam. De a ceges kornyezetekbe azt nehezebb attolni, mint egy valamilyen reputacioval mar rendelkezo 3rd party-t.]
En kb. barhonnan csak ide jutottam: [link]

(#3530) axioma válasza axioma (#3529) üzenetére


axioma
veterán

Csak azert hogy ha valaki netes keresessel idetalalna Munkres ugyben: az az implementacio disallowed-es peldakra idonkent vegtelen ciklusba is megy, nem csak randa (javitas: a find_smallest ha sys.maxsize-zal terne vissza akkor unsolvablematrix). A scipy implementacio van me'g pythonban, de csak disallowed nelkul, persze n*max(costmatrix)-ot irva belejuk es utoellenorizve kikerulheto.

[ Szerkesztve ]

(#3531) RedHarlow


RedHarlow
aktív tag

Sziasztok, nagyon alap kérdésem lenne mint kezdő pythonozó. Van két gépem, mindkettőn python 2.7. Az egyik gépről a másikra át szeretnék rakni egy egyszerű progit (nem én írtam, nem én packageltem), a fő mappát átmásoltam, majd elindítottam a scriptet. Természetesen hibát kaptam:

ImportError: No module named site

Gondolom ez azért van mert ezen a géepn nincsneek meg a megfelelő packagek. Az lenne a kérdésem, hogy hogy tudnám leggyorsabban legszebben megoldani ezt a problémát? A packagek egyik gépről a másikra átmásolhatók vagy inkább telepítsem ott is az újabb verziókat? Honnan tudom, hogy miylen packagekre van szükségem? Ki tudom listáztani valahogy? A scriptem elején van pár import de abból nem igazán jövök rá mik hiáynozhatnak.

import glob
import random
import xml.etree.cElementTree as ET
import lxml.etree as etree
from lxml.etree import tostring
from openpyxl import load_workbook
import datetime
import xlrd
import os.path
from openpyxl.compat import range
from openpyxl.utils import get_column_letter

Előre is köszönöm a segítséget.

(#3532) sztanozs válasza RedHarlow (#3531) üzenetére


sztanozs
veterán

kell egy requirements.txt fájl, amiben összegyűjtöd, hogy milyen csomagok kellenek és odapakolod a könyvtáradba. amikor átviszed a programot máshová, akkor kiadod a következő parancsot:
pip install -r requirements.txt
vagy
python -m pip install -r requirements.txt
Persze, ha pip sincs fent (ami régebbi telepítéseknél előfurdulhat), akkor azt előbb kézzel telepíteni kell.

Amúgy python 2.7-et (meg az egész 2-es vonalat) illendő volna már elfelejteni, mert 2020 január 1. óta End of Life (azaz semmilyen formában nincs támogatva).

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3533) RedHarlow válasza sztanozs (#3532) üzenetére


RedHarlow
aktív tag

Köszi, pip van telepítve mindkét gépen. Egy gépen lehet több python? python -v parancsra 2.7-et ír ki nekem a gépen de az egyik kolléga mondta, hogy átírta, hogy fusson 3.8-on is a script.

Az egyetlen kérdés ami még bennem van, hogy hogy gyűjtöm össze, hogy melyik csomagok kellenek pontosan a script futásához? Ha futtatom sajnos nem írja ki, hogy ez a package hiányzik stb.. vagy a py script elején található import sorokból (amit az előző hsz-ben is írtam) tudni fogja alapból? Azt értem, hogy a requirements.txt alapján majd a másik gépen szépen feltelepíti a packageket amik kellenek. : )

[ Szerkesztve ]

(#3534) sztanozs válasza RedHarlow (#3533) üzenetére


sztanozs
veterán

ha python 2 és 3 is van a gépen, akkor sima python és pip parancsokra a 2.x verzió indul el, python3 és pip3 parancsokra pedig a 3.x verzió.
Lehet több 2.x és 3.x verzió is telepítve, akkor a pontos verziószámmal indítható, pl
python3.8 -m pip install -r requirements.txt

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#3535) Luxoros


Luxoros
lelkes újonc

A frame határvonalát szeretném megjeleníteni színnel , ehhez kérek segítséget.
Köszi!

class BankFrame(ttk.Frame):
def __init__(self):
frame = super().__init__()

# színek beállítása
self.kek = "#29a6e3"
self.sarga = "#ffd700"
self.feher = "#ffffff"
self.szurke = "#aaaaaa"
self.zold = "#5C7F52"
self.piros = "#ee3355"

self.stilus = ttk.Style()
self.stilus.theme_use('alt')

self.stilus.configure('TButton', background=self.kek,
font="Helvetica 13",
foreground=self.feher,
width=12)

self.__create_widgets(frame)

def __create_widgets(self, frame):
# kép hívása a bankframe keretbe
betolt = Image.open("Kartya_kep/hatlap.png")
self.hatlap = ImageTk.PhotoImage(betolt)

self.b_hatlap_label = ttk.Label(frame, compound='top', text='hátlap',
image=self.hatlap, relief='ridge')
self.b_hatlap_label.place(x=0, y=0)

b_sorsol_g = ttk.Button(frame, text='sorsolás', command=self.bank_event)
b_sorsol_g.place(x=100, y=0)

def bank_event(self):
self.b_hatlap_label.configure(text=number.pop())

stb...

Layco

(#3541) Oryctolagus


Oryctolagus
tag

Sziasztok!
Van ez a kod ami terminalban azt csinalja amit elvarok tole.
Szerveren keresek ssh eleressel valamit.
Jelen esetben csak egy serveren de valojaban tobb serveren, ezert a for ciklus.
Mivel szeretnek egy csilli-villi ablakot gombokkal ezert atdobtam a tkinterbe gondolvan, jo lesz az ha mar jo a terminalban.
De..
mivel nincs terminal ezert nem is jon ertek a talalatrol sem ezert az if-ben az else ag nem hivodik meg soha.

Valalki elmagyarazna nekme hogyan tudom a tkinterben ezt osszehozni?!

A kodhoz annyit meg hogy az elejen az ssh hoz szukseges credentioloket toroltem.
jus' sayin'

A kerdes talan az lenne hogyan tudom a terminal kimenetet a GUI-ban hasznalni?

from tkinter import *
import paramiko

servers = ['192.168.XXX.XXX']
host = ''
port = ''
username = ""
password = ""

root = Tk()

valami = Entry(root, width= 50)
valami.pack()

Vlabel = Label(root, text= valami.get())
Vlabel.pack()

command = "find /" + str(valami)

ssh = paramiko.SSHClient()
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())

def mybuttonClick():

for s in servers:
host = s
ssh.connect(host, port, username, password)
stdin, stdout, stderr = ssh.exec_command(command)
lines = stdout.readlines()

if not lines:
nolabel = Label(root, text= "Nincs a " + host + "serveren")
nolabel.pack()
else:
yeslabel = Label(root, text = "A " + valami + " a " + host + " serveren van")
yeslabel.pack()

Searchbutton = Button(root, text="Search the valami name", command = mybuttonClick)
Searchbutton.pack()

root.mainloop()

Per aspera ad astra.

(#3542) Hege1234


Hege1234
addikt

sziasztok!

json fájl létrehozásába, hozzáadadásába akadtam el

ezzel így miért csak feltölteni tudom a már meglévő json fájlt?

import json

a_dictionary = {"list2":{"cim":"Családi videó....","Minőség":"SD","Képarány":"4:3","Időtartam":"01:26:24","Készült":"1993"}}

json_file_path = "videók.json"

with open(json_file_path, 'r+', encoding='utf8') as j:
contents = json.loads(j.read())
contents.update(a_dictionary)
j.seek(0)
json.dump(contents, j)

azért list2 szerepel mert az egy már a fjlban van különben nem írja bele.. :B

ahhoz, hogy a "list" -ben lévő szám mindig növekedjen az update során azt, hogyan lehetne megoldani?

az r+ nem azt jelentené, hogy fájlt is létre tud hozni?
vagy ez így csak a meglévő fájlba tud írni?

előre is köszi!

(#3543) sh4d0w válasza Hege1234 (#3542) üzenetére


sh4d0w
nagyúr
LOGOUT blog

r+ nem tud létrehozni file-t.
[link]

https://www.coreinfinity.tech

(#3544) Hege1234 válasza sh4d0w (#3543) üzenetére


Hege1234
addikt

sajnos itt, nem csak ez a gond
ha nincs már egy "list" a fájlban akkor csak error-t dob
lehet az w+ vagy a+ is

raise JSONDecodeError("Expecting value", s, err.value) from None
json.decoder.JSONDecodeError: Expecting value: line 1 column 1 (char 0)

gyanítom amiatt, hogy ez
contents.update(a_dictionary)
arra van, ha már van benne akkor azt feltölti

[ Szerkesztve ]

(#3545) sh4d0w válasza Hege1234 (#3544) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Nem egészen világos nekem, mi a probléma.
Beolvasod a json file-t, aztán az általad létrehozott dictionary-vel felülírod az első rekordot a jsonban - a seek ráadásul feleslegesnek tűnik, mert az r+ megnyitás egyébként is a file elejére pozicionálja a pointert.

A linken meg írják is, hogy errort dob az r+, ha truncating nélkül nyitod meg írásra vagy olvasásra. A truncate viszont nem elérhető, ha r vagy r+ a megnyitás.

https://www.coreinfinity.tech

(#3546) Hege1234 válasza sh4d0w (#3545) üzenetére


Hege1234
addikt

ami van a példában list2
ezt hogyan lehet megoldani, hogy ha bekerül egy új akkor azt nekem ne kelljen átírogatni mindig?

a_dictionary = {"list5":{"cim":str(title), "Minőség": str(quality_m), "Képarány": str(kepar), "Időtartam": str(idot), "Készült": str(yea_r)}}

{
"list5": {
"cim": "Családi videó....",
"Minőség": "SD",
"Képarány": "4:3",
"Időtartam": "00:41:06",
"Készült": "1995"
}
}

csak erre list számozásra nincs ötletem mert azt hiába index-eltem +1 értékkel
azzal úgy nem sikerült megoldani

[ Szerkesztve ]

(#3547) sh4d0w válasza Hege1234 (#3546) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Biztosan van jobb módszer is:
- kiolvasod, hány "listX" van a file-ban
- levágod az utolsó karaktert és int-té alakítod
- hozzáadsz 1-et, stringgé teszed és hozzáadod a "list" végéhez.

https://www.coreinfinity.tech

(#3548) Hege1234 válasza sh4d0w (#3547) üzenetére


Hege1234
addikt

jó kis trükk :)
így már szép folyamatosan töltődik, köszi!

aki esetleg arra is tudja a választ, hogyan kell azt megoldani, hogy akkor is
működjön, ha üres a fájl :B
légyszi az ne tartsa magába :)

(#3549) sh4d0w válasza Hege1234 (#3548) üzenetére


sh4d0w
nagyúr
LOGOUT blog

Megszámolod, hány "listX" van a file-ban és ha nincs, a+-szal nyitod.

https://www.coreinfinity.tech

(#3550) Hege1234 válasza sh4d0w (#3549) üzenetére


Hege1234
addikt

import json

a_dictionary = {"list1":{"cim":"Családi videó....","Minőség":"SD","Képarány":"4:3","Időtartam":"01:26:24","Készült":"1993"}}

json_file_path = "sample_file.json"

with open(json_file_path, 'a+', encoding='utf8') as j:
contents = json.loads(j.read())
contents.update(a_dictionary)
j.seek(0)
json.dump(contents, j)

ki tudnád próbálni?
nekem nem tud újat létrehozni

Copyright © 2000-2024 PROHARDVER Informatikai Kft.