Új hozzászólás Aktív témák
-
cigam
félisten
Csak nem tudja mijaza BeautifulSoup4 és python-hoz se konyít, merthogy akkor megcsinálta volna magának. Tippem szerint frissült az oldal, és a régi program már nem tud vele mit kezdeni. Abban kér segítséget, hogy - akitöl a kód nem szivárog ki - segítsen az új oldalhoz hozzáfaragni a régi programot.
Freeware, és akciós programok egy helyen https://www.facebook.com/freewarenews
-
AeSDé Team
őstag
Sziasztok!
Készítenem kell egy Python alkalmazást Linux platformra, amely röviden a következő koncepciókat foglalja majd magában:
- több panelből álló grafikus interfész
- eseményvezérelt logika, mely mind az interfész, mind pedig soros-porton érkező bemenetekre képes reagálni
- több felhasználó munkájának asszinkron követéseValaki tud olyan kurzust, oldalt, irodalmat ajánlani, ahol arról regélnek, hogy hogyan lehet jól strukturáltan létrehozni egy ilyen komplexitású, grafikus interfészt is tartalmazó projektet?
Nem egészen tiszta számomra, hogy hogyan is kellene megvalósítanom Pythonban egy MVC dizájnt, hogyan szeparálom a kódomat több fájlba az importok teljes összekavarodása nélkül, és hogyan fogom a GUI-tól független szálon csekkolgatni az egyéb folyamatokat.Nem új számomra a koncepció, írtam már Java-ban, C#-ban hasonlóan bonyolult grafikus alkalmazást, viszont szükségem lenne egy kis útmutatásra hogy hogyan valósíthatom meg ezt a dizájnt Python-ban.
-
Siriusb
veterán
válasz AeSDé Team #1853 üzenetére
Részemről most vettem fel ismét a python fonalat pár évvel ezelőttről, úgyhogy rengeteget bújom a doksikat, különösen a GTK3-t, mert most grafikus felületet is készítek.
Úgy vettem ki a szavaidból, nem mélyedtél még el különösebben a python-ban, ha a modulok importálása sem tiszta. Esetleg itt érdemes kezdeni: https://docs.python.org/3/tutorial/modules.html
Egy példa: ha regex-et akarsz használni, beimportálod a modult, és a modul nevével tudod meghívni az adott eljárásokat:
import re
nezd_mit_talaltam = re.search("^eztkeresem", ebben_keresem)
Így konkrétan tudsz hivatkozni a modulban található kódra, nincs összeakadás, ha más modul is használná ugyanazokat az elnevezéseket.Pl. amit most írtam, abban így néz ki az import:
import pdftotext
import re
import os
from email import generator
from email.message import EmailMessage
from email.headerregistry import Address
import mimetypes
Így szépen használni a prefix-eket, és jobban olvasható:
cwd = os.getcwd()
vagy
flags=re.IGNORECASE
Azt is el kéne dönteni, milyen GUI-t akarsz használni. Nem mindegy, mert esetleg egy tkinter-ben neked kell lekódolnod olyan dolgokat, amiket egy komplexebb felülettel készen kapsz, ami ráadásul még jól integrálódik a környezetbe.
-
Siriusb
veterán
ÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁÁ, mit szívtam.
Sqltite3 date converter-t akarom használni. Beírom:
'SELECT datum AS "dateofrecording [date]" FROM meter'
erre hibával elszáll: sqlite3.OperationalError: no such column: blablaPython doksiban van egy példakód, végén kínomban már lementettem és lefuttattam, simán ment. Még jobban nem értettem, mi a baj.
Végső próbálkozásként átírtam a virtuális oszlopnevet (datum) a példában szereplő current_date-re, és így működik. Ha agyonütnek sem jövök rá erre...
-
sztanozs
veterán
válasz Siriusb #1856 üzenetére
Gondolom mivel a meter táblázatodban nincs datum nevű oszlop, így azt nem is találja meg.
hogy néz ki meter nevű táblázat (hogy jött létre az a tábla)?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...
-
Siriusb
veterán
válasz sztanozs #1858 üzenetére
Persze, hogy nincs benne datum nevű oszlop, mert az csak alias, a valódi oszlop dateofrecording névre hallgat..
A problémám lényege az volt, hogy az alias csak "current_date" név lehet (hiába találtam ki a "datum" fantázianevet), ugye ez hivatkozik a valódi, a táblában megtalálható "dateofrecording" nevű oszlopra a konverter szintaktikájában:
datum AS "dateofrecording [date]"
alias AS "oszlopnév [adattípus]"
azaz a konverter megkapja a mező nevét a táblából "dateofrecording", valamint hogy milyen típusra konvertálja a tartalmát a lekérdezéskor: [date], de a hivatkozási név nem lehet "datum" vagy bármi más, csak és kizárólag a "current_date" név megadásával hajlandó működni a konverter.
Ez nem olyan nagy baj, csak lenne leírva.
Mert ebből nem derült ki számomra:sqlite3.PARSE_COLNAMES
This constant is meant to be used with the detect_types parameter of the connect() function.
Setting this makes the SQLite interface parse the column name for each column it returns. It will look for a string formed [mytype] in there, and then decide that ‘mytype’ is the type of the column. It will try to find an entry of ‘mytype’ in the converters dictionary and then use the converter function found there to return the value. The column name found in Cursor.description is only the first word of the column name, i. e. if you use something like 'as "x [datetime]"' in your SQL, then we will parse out everything until the first blank for the column name: the column name would simply be “x”. -
Siriusb
veterán
válasz kovisoft #1861 üzenetére
Igazad van!
viszont a doksiban rosszul van a példa, én meg leragadtam annál, mert logikusnak tűnt a szintaktika.
import sqlite3
import datetime
con = sqlite3.connect(":memory:", detect_types=sqlite3.PARSE_DECLTYPES|sqlite3.PARSE_COLNAMES)
cur = con.cursor()
cur.execute("create table test(d date, ts timestamp)")
today = datetime.date.today()
now = datetime.datetime.now()
cur.execute("insert into test(d, ts) values (?, ?)", (today, now))
cur.execute("select d, ts from test")
row = cur.fetchone()
print(today, "=>", row[0], type(row[0]))
print(now, "=>", row[1], type(row[1]))
cur.execute('select current_date as "d [date]", current_timestamp as "ts [timestamp]"')
row = cur.fetchone()
print("current_date", row[0], type(row[0]))
print("current_timestamp", row[1], type(row[1]))
Nézd már meg légyszíves, ebben a mintapéldában tényleg fordítva van megadva (és mégis működik), vagy én nézek félre valamit (ami könnyen megeshet ) ?
-
-
nagyúr
válasz s1999xx #1866 üzenetére
pl. van egy python frameworköd, amiben emberek írnak futtatható scripteket. valahogy át kell fordítanod az inputjaikat kóddá.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
kovisoft
őstag
válasz s1999xx #1869 üzenetére
Nem azt mondom, hogy eval-t kell használni unit teszthez, csak annyit, hogy láttam már olyat, ahol használják. Pl. ha nem elég az, amit a standard assert biztosít, ezért egy saját assert változatot akar csinálni az ember, akkor annak a belsejében a saját assertnek átadott kifejezések kiértékeléséhez kellhet az eval. Ami hirtelen eszembe jut: ha olyan függvényeket tesztelek, amik maguk is AssertionError-t dobnak, és meg akarom különböztetni ezt a unit teszt AssertionError-jától.
-
Siriusb
veterán
pyGTK TreeView-ban valaki otthon van?
Szerintem már nem látom a fától az erdőt, kellene egy kis lökés.Amennyiben nem csak egy kifejezett oszlopot, hanem mondjuk ötöt teszek szerkeszthetővé egyszerre (mintha egy excel táblában lennénk), akkor miként tárolom el a megváltoztatott értéket a modelben (ListStore)?
Tehát meg van jelenítve a táblázat, s a Szerkesztés gomb meghívja a következőt:
def edit_selected(self, widget):
if self._select.get_selected()[1] is None: #treeiter is None
self._tree.set_cursor(Gtk.TreePath(0), self._tree.get_columns()[0], True)
for k,renderer in self._renderers.items(): # All renderers of the columns
renderer.set_property("editable", True)
renderer.connect("edited", self.text_edited)
És ezután hogyan tároljam el az új értéket (new_text) ?:
def text_edited(self, widget, path, new_text):
pass
-
nagyúr
válasz s1999xx #1869 üzenetére
nézz meg pl. egy robot frameworköt. ez egy python alapú framework, tesztautomatizálásra használják. azaz emberek arra használják, hogy egy programot írjanak benne, ezzel tesztelik azt a programot, amit le akarnak tesztelni. azaz abból a pszeudókódból, amit a felhasználó begépel, python programot kell csinálni.
Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
kovisoft
őstag
válasz Siriusb #1871 üzenetére
Egy lehetőség, talán működik: A renderer.connect() híváshoz plusz paraméterként tudsz user_param-okat hozzárendelni. Ezt használhatod pl. az oszlop sorszámának megadására, és ezt meg fogja kapni a text_edited() egy plusz user_param paraméterben. A path megmondja, hogy melyik sorban van a módosított cella, a user_param pedig megadja az oszlop számát.
Valami ilyesmire gondolok (tegyük fel, hogy a liststore el van tárolva egy memberváltozóban, de akár ezt is át lehet adni user_param-ként):
def edit_selected(self, widget):
...
column = ...
renderer.connect("edited", self.text_edited, column)
def text_edited(self, widget, path, new_text, user_param):
self.liststore[path][user_param] = new_text -
cousin333
addikt
válasz s1999xx #1869 üzenetére
Egy ötlet: készítesz egy általános jellegű GUI-t. Mondjuk van benne egy nagyobb szövegmező egy vászon, amire grafikont lehet rajzolni, néhány gomb, tekerő, csúszka... stb.
A lényeg, hogy a szövegmezőbe lehet Python kódot beírni (vagy fájlból betölteni), amit aztán futtatni tudsz. Ehhez kell az
eval()
, így a kód használhatja GUI elemeket is, például függvényt rajzolhat, vagy feldolgozhat egy másik mezővel, gombbal betöltött adatfájlt.A lényeg, hogy a Python egy szkriptnyelv, aminek egyik előnye, hogy nem kell előre megírni a teljes kódot, hanem dinamikusan futtathatod. A fenti példa tulajdonképpen egy tuningolt parancssornak is tekinthető.
UI: a Robot Framework nem tudom, mennyire jó példa. Annak pont az a lényege, hogy a tesztet nem Pythonban írod meg, hanem egy - szerintük - egyszerűbb leíró nyelvvel amit a framework aztán értelmez.
[ Szerkesztve ]
"We spared no expense"
-
cousin333
addikt
válasz s1999xx #1876 üzenetére
A fájlból azért nem szerencsés az import-tal beolvasni, mert a fájl tartalma kell, hogy a mezőben szerepeljen (legalábbis az én elképzelésem szerint). Ennek az az értelme, hogy a felhasználó is látja a szkriptet, sőt, apróbb módosításokat is tud rajta végezni. Persze ehhez az sem árt, ha már előzetesen beimportáltunk mindenféle segédfüggvényeket, hogy ez a szkript már rövid és lényegre törő lehessen.
Működését tekintve hasonlítana mondjuk a Robot Framework megoldásához, csak itt nem kell teljesen feleslegesen egy külön leírónyelvet elsajátítani, mehet minden Pythonban.
Ez az ötlet mérés-adatgyűjtés területén merült fel bennem. A "rendes" GUI-s programok ugyanis általában jól működnek, amíg pontosan úgy használják őket, ahogy a fejlesztők megálmodták. De ha már nem pont azt és nem pont úgy kell, akkor jönnek a problémák, míg a fenti exec-es megoldás sokkal rugalmasabb lehet.
[ Szerkesztve ]
"We spared no expense"
-
KEAN
tag
Hmm... A fenti dolgok kicsit elgondolkodtattak.
Vannak ezek a programozás tanulós oldalak, ahol van valami feladat, a felhasználó beírja a kis kódját, aztán egy gombnyomásra le lehet futtatni a scriptet és kiírja az eredményt vagy hiba esetén a stack tracet.
Kipróbáltam, simán tudtam a kérdéses feladattól teljesen független kódot is írni, fájlt létrehozni, os modullal garázdálkodni, stb, stb.
Kíváncsi vagyok meddig lehet elmenni, bár ideális esetben ezek a környezetek valami elszigetelt konténerben futnak gondolom."Persze, hogy tudtam, csak nem sejtettem!"
-
peter1998
tag
Sziasztok.
Olyan kérdésem lenne hogy azt hogyan lehet megoldani hogy egy fájl 12.-sorát olvassam be.Jelenleg ez a kódom.f = open("asd.txt", "r")
akksi_toltottseg = f.readline()
print(akksi_toltottseg()) -
-
peter1998
tag
válasz kovisoft #1883 üzenetére
Köszi szépen.Végül ez lett a kód.
#fajl beolvasas
f = open("asd.txt", "r")
lines=f.readlines()
#beolvastam a fajlt
#akksi toltottsege
akksi_toltottsege = lines[0]
form_akksi_toltottsege = akksi_toltottsege[16:19]
#---------------------------
akksi_feszultseg = lines[1]
form_akksi_feszultseg = akksi_feszultseg[17:22]
#---------------------------
bejovo_feszultseg = lines[15]
form_bejov_feszultseg = bejovo_feszultseg[15:20]
#---------------------------
#fajl bezarasa
f.close() -
Wmwinters01
tag
Sziasztok,
Pár tanácsért jöttem. Ahogy olvasom a fórumot, azért itt programozásban elég jártas emberek fordulnak meg.
Az lenne a kérdésem, hogy érdemes elkezdeni megtanulni programozni Pythonban, ha nincs semmilyen ismeretem a többi program nyelvhez sem?
Igazából érdekel a programozás és ahogy eddig olvastam elég sokat tudna a munkában segíteni. Meg hát nem baj ha az ember ezt is elsajátítja..Előre köszönöm a válaszokat és bocs a off-ért.
I`m not afraid to die, I just don`t want to be there when it happens.
-
kovisoft
őstag
válasz Wmwinters01 #1885 üzenetére
A python nagyon jó első nyelvnek, mert könnyen tanulható. És nem minden nyelven ugyanakkora erőfeszítés programozni tanulni.
-
Wmwinters01
tag
válasz s1999xx #1886 üzenetére
Az angol folyamatos tanulásban van... sajnos még a német oldalon indultam, de a szakterülethez meg minden máshoz az angol kell, szóval az is fejlődő szinten van -nem szokott ártani ha angol fórumokat, doksikat kell olvasni -
Köszönöm a tippet, akkor átrágom magam oda és mentem a későbbiekre
I`m not afraid to die, I just don`t want to be there when it happens.
-
Siriusb
veterán
válasz Wmwinters01 #1888 üzenetére
Csatlakozom az előttem szólókhoz, elég könnyű elsajátítani az alapokat, nagyon kényelmes a használata, bár el kell sajátítani hozzá a "pitonikus" gondolkodást, hogy tényleg szép és a nyelvhez illő legyen a kódod.
Kíváncsiságból szondáznám én is a nagyérdeműt (ha van kedvetek hozzá):
1.) Milyen GUI-t részesítetek előnyben? (Pl. GTK, mert a KDE (Qt) kiakaszt. )
2.) Milyen IDE-t használtok (ingyenes)? (Eclipse + PyDev) -
justmemory
senior tag
válasz Siriusb #1889 üzenetére
Szia,
1. én a telómra írok programokat (Nokia n900) - ez be is határolja a GUI-t: GTK (illetve az abból eredő Hildon); lehetne Qt-t is használni, de annak még nem ugrottam neki.
2. Én nem használok IDE-t; vagy iPython-ban próbálok ki pár dolgot, vagy simán Vim/NeoVim-el megírom, aztán futtatom.--- Imprisoned, inside this mind... --- Joined at the soul with a pair of headphones ---
-
nagyúr
válasz Siriusb #1889 üzenetére
1, plain text
2, pycharm community edition. munkához is használható (sőt, még forkolhatod is az apache 2.0 liszensz miatt).Tudod, mit jelent az, hogy nemezis? Az érintett, erősebb fél kinyilatkoztatása a méltó büntetés mértékét illetően. Az érintett fél jelen esetben egy szadista állat... én.
-
Siriusb
veterán
Köszönöm mindenkinek a válaszokat!
Hehe, pár script nekem is megy GUI nélkül, de azért vannak olyan dolgok, amikhez célszerűbb (nekem) a GUI.
Vim-et én is szeretem, bár python-hoz még sosem használtam. Pycharm-ot kipróbálom, ha már így bejön többeknek.
-
válasz Wmwinters01 #1885 üzenetére
coursera. org-on van egy Programming for everyone kurzus, semmiféle elözetes peogramozói tudás nem kell hozzá.
https://www.coreinfinity.tech
-
Vesporigo
aktív tag
Ezt a kurzust én is csak ajánlani tudom, a Python for Everybody Specialisation első része. Nagyon érthetően magyaráz Dr. Chuck (természetesen angolul) A Python for Everybody Specialisation első 3 részét megcsináltam kb 1 hónap alatt (ha nagyon ráfekszik az ember, fele ennyi idő is elég):
- Programming for Everybody (Getting Started with Python)
- Python Data Structures
- Using Python to Access Web DataA 4.rész, a Using Databases with Python már kifogott rajtam, ezt egyelőre hanyagolom, mert az SQL tudásom kissé megkopott, szóval azt kell most felelevenítenem.
Érdekes gyakorlatokat ad minden fejezet végén, néha kicsit böngészni kell a netet, vagy kis segítséget kérni, de nem lehetetlen. Engem teljesen lekötött a kurzus.
-
Siriusb
veterán
válasz Siriusb #1897 üzenetére
Nem is olyan rossz a pycharm.
(#1894) s1999xx
Én sem értem, miért a tkinter-t rakták be alapnak. Mondjuk a python3-hoz sokáig nem volt wxWidget, ha jól emlékszem, azonban sokak örültek volna, ha ezzel szállítják a python3-t.A GTK3 elég jól dokumentált, bár őszintén szólva néha elveszek benne, amikor már nem tudom, egy adott osztály éppen mit és honnan örökölt. Vagy éppen amit próbálok fabrikálni, az gyárilag benne van, amire egy idő után rátalálok.