Szkriptek: Python, Perl, Bash, ...

python: dict elem torlese iteracio kozben

van erre szep megoldas?

d={"a":100,"az":73,"hup":10,"abc":1,"xyz":3,"asdf":1}

for k in d:
    if d[k]==1: del d[k]

RuntimeError: dictionary changed size during iteration

megkerulni persze meg lehet, pl. elore lemasolni a d.keys() tombot es abban iteralni, vagy egy kulon tombbe gyujteni a torlendoket es egy masodik ciklusban csinalni a del-t...

Markdown, Pandoc, Typst to PDF

Sziasztok!

Word DOC -> markdown konvertálás nagyszerűen működik a Pandoc-kal. Az MD-ből HTML és PDF generálás is működik. A PDF ág lenne most érdekes. A Typst CLI-ből is elérhető, a Pandoc konvertáláskor Typst template is használható.

Próbálom megérteni a Typst template felépítését, működését, de meg elég sok a homály.

Van itt a HUP-on valaki, aki md-ből tud csilivili PDF-et generálni, mert érti a szóban forgó template használatát?

Cz

Kép tömörítése nem megy

Segítsetek kérlek. Viszonylag egyszerű feladatot szerettem volna megoldani. Egy könyvtárban lévő jpg képeket akartam konvertálni, úgy hogy max 500KB legyen a fájl mérete. Persze kérdeztem a jóbarátomat a chatgpt-t is, de sajnos nem sikerült megoldani, hogy egy nagyon nagy méretű és felbontású képet tömörítsen/átméretezzen. És íme a szkript:

#!/bin/bash

# Maximális fájlméret bájtban (500 KB)
MAX_SIZE=512000

# Minőségi beállítások
QUALITY_START=85
QUALITY_MIN=40
QUALITY_STEP=5

# Átméretezési korlátok
MAX_WIDTH=1600
MAX_HEIGHT=1600

# Iterálás a .jpg fájlokon az aktuális könyvtárban
for FILE in *.jpg; do
    # Ellenőrizzük, hogy tényleg létezik-e fájl
    if [ ! -f "$FILE" ]; then
        echo "Nincsenek .jpg fájlok az aktuális könyvtárban."
        exit 1
    fi

    # Fájl méretének ellenőrzése
    FILE_SIZE=$(stat -c%s "$FILE")
    if [ "$FILE_SIZE" -le "$MAX_SIZE" ]; then
        echo "✔️ Már megfelelő méretű: $FILE"
        continue
    fi

    echo "⚙️ Feldolgozás: $FILE"

    # Új fájlnév létrehozása _converted utótaggal
    NEW_FILE="${FILE%.*}_converted.jpg"

    # Ideiglenes fájl létrehozása
    TEMP_FILE="${NEW_FILE}_temp.jpg"
    cp "$FILE" "$TEMP_FILE"

    # Kép felbontásának lekérdezése
    IMAGE_WIDTH=$(identify -format "%w" "$TEMP_FILE")
    IMAGE_HEIGHT=$(identify -format "%h" "$TEMP_FILE")

    # Ha a kép szélessége vagy magassága túl nagy, akkor átméretezzük
    if [ "$IMAGE_WIDTH" -gt "$MAX_WIDTH" ] || [ "$IMAGE_HEIGHT" -gt "$MAX_HEIGHT" ]; then
        echo "🔄 Átméretezés szükséges: $FILE"
        convert "$TEMP_FILE" -resize "${MAX_WIDTH}x${MAX_HEIGHT}" "$TEMP_FILE"
    fi

    # Minőség csökkentése + átméretezés
    QUALITY=$QUALITY_START
    while [ "$QUALITY" -ge "$QUALITY_MIN" ]; do
        # Próbálunk minőséget csökkenteni
        convert "$TEMP_FILE" -sampling-factor 4:2:0 -strip -quality "$QUALITY" "$TEMP_FILE"
        
        # Fájl méretének újraellenőrzése
        NEW_SIZE=$(stat -c%s "$TEMP_FILE")
        if [ "$NEW_SIZE" -le "$MAX_SIZE" ]; then
            mv "$TEMP_FILE" "$NEW_FILE"
            echo "✅ Sikeresen tömörítve: $NEW_FILE (Új méret: $((NEW_SIZE / 1024)) KB)"
            break
        fi

        QUALITY=$((QUALITY - QUALITY_STEP))
    done

    # Ha nem sikerült 500 KB alá csökkenteni, törlés
    if [ "$QUALITY" -lt "$QUALITY_MIN" ]; then
        echo "⚠️ Nem sikerült 500 KB alá csökkenteni: $FILE"
        rm "$TEMP_FILE"
    fi
done

A hiba: ⚙ Feldolgozás: 01 Előtte.jpg
🔄 Átméretezés szükséges: 01 Előtte.jpg
⚠ Nem sikerült 500 KB alá csökkenteni: 01 Előtte.jpg
 

A fájl amibe beletörik a bicskája a 01 Előtte.jpg egy 3056x3056 állomány, mérete pedig 3.0MiB

Persze, ha valakinek van tuti műkődő snipeete aminek nem törik bele a bicskája az ekkora állományokba és megosztja itt velem azt is nagyon szépen  megköszönöm.

Köszönöm az ötleteket.

Szerk. A célom, hogy weben jelenítsem meg a képeket és ehhez szeretném konvertálni. Lehet tehát webp is a formátum.

Python könyv (fizikai) kerestetik

Üdv!

 

Fizikai python könyvet keresek.

 

Ami fontos, hogy legalább 3.6-os, de inkább 3.8(+)-os verzióhoz legyen.

Meg lehessen venni könyvesboltban, mert lehetőleg szombatig szeretném megszerezni (Budapest).

Bár rég olvastam magyarul bármiféle szakirodalmat, most nem lennék ellene.

 

Ha fentiek nem mennek, de valakinek éppen van valami elfekvő, amit át / meg lehet venni, arra is nyitott vagyok.

 

 

 

Köszönöm.

Keresek egy python oktató anyagot

Valaha, mittudomén, 20 éve, amikor elhatároztam, hogy Python-t fogok használni bizonyos dolgokra, egy gyors Google kereséssel találtam egy weboldalt, ami tartalmazott néhány fejezetet, ami bemutatta, hogyan lehet Pythonban programozni. Simán lehet, hogy ez egy könyv tartalma volt online formában.

Arra emlékszem, hogy úgy indult, hogy python mint számológép. Aztán bemutatta, hogyan lehet egy függvényt definiálni, és erre egy fibonacci számoló rutint használt, azt ciklusból rekurzívan hívta.

Aztán általános dolgok jöttek, amikre nem emlékszem már ennyire részletesen.

Kb. 8 éve, amikor a fiam akart programozással ismerkedni, Google újra kiköpte ezt az oldalt, és másodjára is jó volt.

A lényeg az, hogy mostanában nem találom ezt a weboldalt / könyvet.

Google ad egy csomó találatot, és bizonyára sok nagyon jó ezek közül, de én azt a bizonyosat keresem.

Tudja esetleg valaki, hogy miről beszélek?

Python - Google API Client - conflict

Sziasztok,

Generált a Copilot egy Python szkriptet. 

Már az első sor hibára fut:

from googleapiclient.discovery import build

A hibaüzenet:

ImportError: Module use of python38.dll conflicts with this version of Python.

pip-pel telepítettem a modult, sikeresen le is futott. 

Próbáltam már ezerféleképpen, az istennek nem akar működni.

python --version
Python 3.13.1

pip --version
pip 24.3.1

Egy kis AWK segítség kérés

Sziasztok,

Próbáltam AWK scriptet írni, de nagyon nem ment, ezért megkértem a ChatGPT-t, hogy írja meg nekem. Az adott feladat, egy program kimenetét feldolgozni az alábbi módon:

1. sor nem kell, átlépjük
minden további sorban az első két mező elválasztása " " szóköz mentén, míg az utolsó rész ami egy - jel után van legyen a harmadik mező.

példa:

pelda.txt

    Header1 Header2 - Egyszó
Valami     Szöveg - Több szó is lehet
Másik Sor - Még egy hosszabb kifejezés - van benne kötőjel

A hozzátartozó AWK script:

awk 'NR > 1 { 
    # Az első két szót (szöveg1, szöveg2) elválasztjuk
    split($1, arr1, " ");  # A szöveg1-t és szöveg2-t első lépésben szétválasztjuk
    split($2, arr2, " ");  # A szöveg2 után is szétválasztjuk
    # Azokat az adatokat, amik a "-" után vannak, egy változóba tesszük
    text = substr($0, index($0, " - ") + 3)  # A "-" utáni szöveget változóba tesszük
    print arr1[1],",",arr2[1], ",", text  # Kinyomtatjuk az első két szót és a kifejezést
}' pelda.txt

Lehet ezt egyszerűsíteni, vagy "jóvanazúgy"? :)

Terraform: változók átadása

Sziasztok,

root modul:

module "resource_group" {
  for_each                                  =  var.customers
  source                                     =  "./modules/resource_group"
  customer_name                       =  each.value.name
  subscription_location                =  var.subscription.location
  subscription_locationshortname =  var.subscription.locationshortname
  subscription_environment         =  var.subscription.environment
  tags_owner                             =  var.tags.owner
  tags_deployed_by                    =  var.tags.deployedby
  tags_deployment_date             =  var.tags.deploymentdate 
  tags_cost_center                     =  var.tags.costcenter
  tags_snow_fgroup                    =  var.tags.snowfgroup
}

module "key_vault" {
  for_each                           =  module.resource_group.resource_group_name
  source                              =  "./modules/key_vault" 
  location                            =  module.resource_group.resource_group_location
  resource_group_name       =  module.resource_group.resource_group_name
  tenant_id                         =  var.subscription.tenantid
  tags_owner                      =  var.tags.owner
  tags_deployed_by             =  var.tags.deployedby
  tags_deployment_date      =  var.tags.deploymentdate 
  tags_cost_center              =  var.tags.costcenter
  tags_snow_fgroup            =  var.tags.snowfgroup
  depends_on = [
    module.resource_group.resource_group_name
  ]
}
 

resource_group output.tf-je:

output "resource_group_name" { value = azurerm_resource_group.rg.name }
output "resource_group_location" { value = azurerm_resource_group.rg.location }

plan kimenet:

│ Error: Invalid value for input variable │ │ on main.tf line 24, in module "key_vault": │ 24: location = module.resource_group.resource_group_location │ │ The given value is not suitable for module.key_vault.var.location declared at modules\key_vault\variables.tf:7,1-20: │ string required. ╵ ╷
│ Error: Invalid value for input variable │ │ on main.tf line 25, in module "key_vault": │ 25: resource_group_name = module.resource_group.resource_group_name │
│ The given value is not suitable for module.key_vault.var.resource_group_name declared at │ modules\key_vault\variables.tf:12,1-31: string required.

Mit ronthattam el?

Köszönöm!

[Megoldva]Python - Qt - PDF

Sziasztok,

A kérdés egyszerű: miért nem működik a következő kód?

from reportlab.pdfgen import canvas
from io import BytesIO
from PyQt6.QtCore import QBuffer, QIODevice
from PyQt6.QtPdf import QPdfDocument
from PyQt6.QtPdfWidgets import QPdfView
from PyQt6.QtWidgets import QApplication, QVBoxLayout, QWidget


def create_pdf_in_qbuffer():
    pdf_buffer = BytesIO()
    c = canvas.Canvas(pdf_buffer)
    c.drawString(100, 750, "Hello, ReportLab in QBuffer!")
    c.save()

    pdf_buffer.seek(0)

    # Save for debugging
    with open("debug_output.pdf", "wb") as f:
        f.write(pdf_buffer.getvalue())

    qbuffer = QBuffer()
    qbuffer.open(QIODevice.OpenModeFlag.WriteOnly)
    qbuffer.write(pdf_buffer.read())
    qbuffer.close()
    qbuffer.open(QIODevice.OpenModeFlag.ReadOnly)
    return qbuffer


def create_qpdfdocument_from_qbuffer(qbuffer):
    if qbuffer.size() == 0:
        print("Error: QBuffer is empty.")
        return None

    pdf_document = QPdfDocument(None)
    load_status = pdf_document.load(qbuffer)
    if load_status != QPdfDocument.Status.Ready:
        print("Failed to load PDF document. Status:", load_status)
        return None

    return pdf_document


def main():
    app = QApplication([])

    qbuffer = create_pdf_in_qbuffer()
    pdf_document = create_qpdfdocument_from_qbuffer(qbuffer)
    if pdf_document is None:
        print("Error: Could not create QPdfDocument")
        return

    pdf_view = QPdfView()
    pdf_view.setDocument(pdf_document)

    window = QWidget()
    layout = QVBoxLayout(window)
    layout.addWidget(pdf_view)
    window.setWindowTitle("QPdfDocument from QBuffer (Qt6)")
    window.resize(800, 600)
    window.show()

    app.exec()


if __name__ == "__main__":
    main()