ID.nl logo
Zo kun je programmeren in Python - Deel 5
© Reshift Digital
Zekerheid & gemak

Zo kun je programmeren in Python - Deel 5

In de href="https://computertotaal.nl/artikelen/pc/zo-kun-je-programmeren-in-python-deel-4/" rel="noopener noreferrer" target="_blank">vorige les</a> toonden we allerlei manieren om de uitvoer van tekst op het scherm aan te passen. In deze les zetten we de stap van je scherm naar bestanden: we gaan gegevens uit bestanden lezen en naar bestanden schrijven. Daarnaast leer je reageren op exceptions: foutmeldingen die Python je geeft als er iets misgaat.

Twee lessen geleden gebruikte je de functie input om wat de gebruiker op zijn toetsenbord intypt te registreren. En in de vorige les toonden we je hoe je met de functie print uitvoer op het scherm toont. Maar in- en uitvoer kan ook via bestanden verlopen. Laten we eens kijken hoe dat gaat.

Hier kun je les vier bekijken.

We beperken ons in deze les tot het lezen en schrijven van tekstbestanden. Je kunt ook met binaire bestanden werken, die willekeurige data in een andere vorm dan tekst kunnen bevatten, maar dat is wat meer werk omdat je de data nog moet interpreteren. Voor de rest werkt dit hetzelfde.

Een tekstbestand lezen

We tonen hier in een voorbeeld hoe je op een Linux-machine zoals een Raspberry Pi met Raspberry Pi OS (tot voor kort Raspbian geheten) het bestand met de lijst van gebruikers uitleest. Ook op macOS werkt dit voorbeeld. Gebruik je Windows, maak dan zelf een bestand aan met de inhoud die we in ons voorbeeld tonen en pas de locatie van het te openen bestand aan in je Python-code.

De eenvoudigste manier om een volledig tekstbestand uit te lezen en op het scherm te tonen, heeft maar twee regels nodig:

with open('/etc/passwd', 'rt') as bestand:

print(bestand.read())

In de eerste regel openen we het bestand met de functie open. Het eerste argument is het bestand dat we willen openen. We hebben hier een volledig pad gebruikt: '/etc/passwd'. Als je een bestand wilt lezen dat in dezelfde directory staat als waarin je de Python-interpreter hebt opgestart, hoef je geen volledig pad door te geven: de bestandsnaam volstaat dan. Met het tweede argument 'rt' geven we aan dat we het bestand willen lezen en dat het om een tekstbestand gaat.

De constructie met with is wat Python een ‘context manager’ noemt. In het with-blok heb je toegang tot het object bestand dat het geopende bestand voorstelt. Na het with-blok wordt het bestand automatisch gesloten, zodat je het niet meer kunt lezen. Dit lijkt vanzelfsprekend, maar dat is het niet: ook zonder with kun je bestanden openen, maar als je dan het bestand na gebruik vergeet te sluiten, kan dit tot problemen leiden. Werk dus nooit met bestanden zonder with.

In de tweede regel roepen we de functie read op het object bestand aan. Deze functie geeft de volledige inhoud van het tekstbestand terug als een string, die we dan met print op het scherm tonen. Op een typisch Linux-systeem ziet de uitvoer er als volgt uit (we tonen hier maar enkele regels):

root:x:0:0:root:/root:/bin/bash

daemon:x:1:1:daemon:/usr/sbin:/usr/sbin/nologin

bin:x:2:2:bin:/bin:/usr/sbin/nologin

Enzovoort

Een tekstbestand regel voor regel lezen

Maar wat als we niet het hele bestand in één keer willen inlezen, maar regel voor regel, bijvoorbeeld omdat we willen testen of de regels aan specifieke voorwaarden voldoen? Geen probleem, ook dat is in Python heel eenvoudig. In plaats van de functie read op je bestand toe te passen, ga je dan met een for-lus door de elementen van het bestand. Het tekstbestand dat je van de functie open terugkrijgt, gedraagt zich immers als een lijst met als elementen de opeenvolgende regels in het bestand.

Een string splitsen

Maar als we die regels een voor een gaan inlezen, moeten we er ook iets mee doen. Zoals je ziet, bevat het bestand /etc/passwd op elke regel allerlei informatie over de gebruiker, telkens afgescheiden door een dubbele punt. We willen elk van die gegevens afzonderlijk uitlezen. Dat gaat eenvoudig met de functie split die we op een string kunnen uitvoeren. Bijvoorbeeld:

>>> 'root:x:0:0:root:/root:/bin/bash'.split(':')

['root', 'x', '0', '0', 'root', '/root', '/bin/bash']

Je ziet hier dat we aan de functie split het teken meegeven dat de verschillende componenten van de string afscheidt: ':'. Het resultaat is een lijst met strings die onderdeel uitmaken van onze lange string, zonder de afscheidingstekens ':'.

De opeenvolgende componenten in de regels van het bestand /etc/passwd hebben overigens de volgende betekenis: gebruikersnaam, ongebruikt, ID van de gebruiker, ID van de groep, volledige gebruikersnaam, persoonlijke map van de gebruiker, shell van de gebruiker.

Een lijst uitpakken

Je kunt nu naar de elementen in de gesplitste string verwijzen met een index, bijvoorbeeld:

>>> informatie = 'root:x:0:0:root:/root:/bin/bash'.split(':')

>>> informatie[0]

'root'

>>> informatie[6]

'/bin/bash'

Maar dat is niet heel duidelijk. Zo willen we informatie[0] eigenlijk gebruiker noemen en informatie[6] de naam shell geven. Gelukkig kun je in Python de elementen van een lijst eenvoudig in één keer aan enkele variabelen toekennen. Dat heet unpacking. In ons voorbeeld gaat dat als volgt:

>>> gebruiker, *_, naam, directory, shell = 'root:x:0:0:root:/root:/bin/bash'.split(':')

>>> gebruiker

'root'

>>> _

['x', '0', '0']

>>> naam

'root'

>>> directory

'/root'

>>> shell

'/bin/bash'

De notatie * gebruik je om een willekeurig aantal elementen uit te pakken. Omdat we in dit geval niet in deze elementen geïnteresseerd zijn, kennen we ze toe aan de variabele met de naam _, vandaar dat we bij het uitpakken *_ gebruiken. We konden dit hier ook vervangen door gebruiker, _, _, _, naam, directory, shell.

Gegevens uit een tekstbestand filteren

Dan weet je nu genoeg om de volgende opdracht uit te voeren: lees het bestand met wachtwoorden regel per regel in en als de shell geen '/usr/sbin/nologin' of '/bin/false' is, toon je de gebruikersnaam, volledige gebruikersnaam en persoonlijke map.

De code ziet er als volgt uit:

with open('/etc/passwd', 'rt') as bestand:

for regel in bestand:

gebruiker, *_, naam, directory, shell = regel.strip().split(':')

if shell not in ['/bin/false', '/usr/sbin/nologin']:

print(' {1} ({0}): {2} ({3})'.format(gebruiker, naam, directory, shell))

We openen dus het bestand /etc/passwd als tekstbestand om te lezen. Voor elke regel in het bestand pakken we de verschillende elementen uit in enkele variabelen. We kijken dan of de shell niet gelijk is aan de twee eerdergenoemde shells. Als aan die voorwaarde is voldaan, tonen we de gebruiker, zijn volledige naam, zijn persoonlijke map en zijn shell.

Er is slechts één nieuwigheid in deze code: de functie strip. Die verwijdert witruimte en nieuwe regels aan het begin en het einde van een string. Dat hebben we hier nodig omdat de shell op het einde van de regel staat en er daar dus een teken voor een nieuwe regel komt. Zonder die aanroep van strip zou de vergelijking in de regel erna niet werken.

Naar een tekstbestand schrijven

Naar een tekstbestand schrijven, verloopt op een vergelijkbare manier als een tekstbestand lezen. We beginnen een with-blok waarin we het bestand openen en daarin schrijven we naar het bestand:

with open('bestand.txt', 'wt') as bestand:

bestand.write('Dit is de eerste regel.\n')

bestand.write('Dit is de tweede regel.\n')

bestand.write('Dit is de derde regel.\n')

Op het einde van elke regel moet je zelf een teken voor een nieuwe regel toevoegen: \n. Een andere manier om een regel naar een tekstbestand te schrijven, is met de functie print, die automatisch een nieuwe regel toevoegt:

print('Dit is de eerste regel.', file=bestand)

Merk op dat we het bestand openen met als tweede argument 'wt', waarmee we aangeven dat we naar het bestand willen schrijven. Op deze manier overschrijven we alle al bestaande inhoud van het bestand, dus let hiermee op!

Als je deze situatie wilt vermijden, kun je open aanroepen met de bestandsmodus 'xt'. Als het bestand nog niet bestaat, doet die hetzelfde als 'wt': je kunt naar het bestand schrijven. Maar als het bestand al bestaat, krijg je een foutmelding:

with open('bestand.txt', 'xt') as bestand:

print('Dit is een test.', file=bestand)

with open('bestand.txt', 'xt') as bestand:

print('Dit is nog een test.', file=bestand)

Traceback (most recent call last):

File "<pyshell>", line 1, in <module>

FileExistsError: [Errno 17] File exists: 'bestand.txt'

Een andere interessante bestandsmodus is 'at' (van ‘append’): hiermee voeg je aan het einde van een bestaand tekstbestand regels toe.

Exceptions afhandelen

In het voorbeeld hierboven zou je waarschijnlijk de foutmelding dat het bestand al bestaat op een nettere manier willen afhandelen. Wat we tot nu toe een foutmelding genoemd hebben, heet in Python een exception. Er bestaan verschillende types exceptions en in je Python-code kun je eenvoudig het optreden van exceptions afvangen. Dat gaat als volgt:

try:

with open('bestand.txt', 'xt') as bestand:

print('Dit is nog een test.', file=bestand)

except FileExistsError:

print('FOUT: Het bestand bestaat al.')

De code binnen het try-blok wordt uitgevoerd zoals normaal. Maar als er binnen dit blok een exception voorkomt, gaat het programma door naar het except-blok. Daarin hebben we aangegeven dat we alleen in de exceptions van het type FileExistsError geïnteresseerd zijn. In het geval er zo een voorkomt, tonen we onze eigen foutmelding. Daarna gaat het programma verder na het except-blok.

Als je meerdere types exceptions wilt afvangen, voeg je meerdere except-blokken toe met elk het andere type exception. Als je voor meerdere types exceptions dezelfde code wilt uitvoeren, dan zet je die exceptions tussen haakjes, zoals hier:

except (ZeroDivisionError, ValueError):

En als je op alle mogelijke exceptions hetzelfde wilt reageren, voeg je gewoon een except-blok zonder de naam van een exception toe, al is dat niet zo vaak zinvol.

Samenvatting

In deze les hebben we geleerd hoe we tekstbestanden kunnen inlezen en strings in onderdelen kunnen splitsen. Ook in de andere richting kun je nu met tekstbestanden werken: je kunt willekeurige tekst naar een bestand schrijven. En doordat je hebt geleerd hoe je exceptions kunt afvangen, hoeven de gebruikers van je programma geen cryptische foutmeldingen van Python meer te krijgen. Omdat je met deze kennis al complexere Python-programma’s kunt schrijven, leer je in de volgende les hoe je je programma meer kunt structureren in functies en modules.

Opdracht

Vraag de gebruiker om een regel zoals root:x:0:0:root:/root:/bin/bash voor gebruik in een wachtwoordbestand op te geven. Schrijf de belangrijkste elementen van de regel naar een afzonderlijke regel in een bestand, in de vorm: Gebruiker: root Naam: root Directory: /root Shell: /bin/bash Zorg dat je programma een heldere foutmelding geeft als de regel niet de correcte vorm voor een wachtwoordbestand heeft.

Uitwerking

regel = input('Voer een regel voor het wachtwoordbestand in: ') try: gebruiker, _, _, _, naam, directory, shell = regel.strip().split(':') with open('wachtwoordbestand', 'wt') as bestand: print('Gebruiker: {}'.format(gebruiker), file=bestand) print('Naam: {}'.format(naam), file=bestand) print('Directory: {}'.format(directory), file=bestand) print('Shell: {}'.format(shell), file=bestand) except ValueError: print('Voer de regel in de volgende vorm in:') print('gebruiker:x:0:0:naam:directory:shell') Dit is een rechtstreekse combinatie van alles wat je in deze les geleerd hebt. Let op: we hebben hier wel gebruiker, _, _, _, naam, directory, shell nodig en niet de kortere versie gebruiker, *_, naam, directory, shell. Met die laatste regel garanderen we immers niet dat de regel uit exact zeven elementen bestaat.

Cheatsheet

exception: een foutmelding in Python pad: de locatie van een bestand, met alle bovenliggende directorynamen erbij

▼ Volgende artikel
Kieskeurig.nl's grote tv-test: dit zijn de 11 best geteste televisies van 2025
© ID.nl
Huis

Kieskeurig.nl's grote tv-test: dit zijn de 11 best geteste televisies van 2025

Afgelopen jaar hebben Kieskeurig.nl en ID.nl de beste televisies laten testen door expert Eric Beeckmans. Met Black Friday om de hoek en daarna al weer de feestdagen in het verschiet, is dit het moment om zo'n televisie voor een mooie prijs in de wacht te slepen. Bekijk snel alle gesteste tv's met de linkjes naar de goedkoopste winkels!

Panasonic TV‑55Z90BE6 - Score 9/10

De Panasonic TV‑55Z90BE6 gebruikt een Master OLED Pro‑paneel, waardoor beelden met hoge piekhelderheid, fraaie kleuren en veel detail worden getoond. Alle HDR‑formaten worden ondersteund en de fabriekskalibratie is uitstekend. De tv bevat een goede geluidssectie en een draaibare voet. De prijs ligt echter hoog en in België ontbreken een aantal apps. DTS‑decodering wordt niet ondersteund.

Pluspunten

Zeer goede piekhelderheid, mooie kleuren en goede bewegingen dankzij Master OLED Pro en goede kalibratie
Handige draaibare voet en degelijk geluid

Minpunten

Geen DTS‑ondersteuning
Gebrek aan lokale smart‑tv‑apps (vooral in België)

LG OLED65C54LA - Score 8/10

De LG OLED65C54LA is een kleine update van LG’s populaire C‑serie. Het paneel biedt betere piekhelderheid en een uitstekende fabriekskalibratie. De tv ondersteunt Dolby Vision en HDR10, en dankzij vier HDMI 2.1‑poorten is hij geschikt voor gamen. WebOS 25 reageert snel en LG belooft vijf jaar software‑updates, maar de startpagina bevat advertenties. Daarnaast ontbreken HDR10+ en DTS‑ondersteuning.

Pluspunten

Hoge piekhelderheid en uitstekende HDR‑beelden met brede kijkhoek
Vier HDMI 2.1‑poorten met sterke gamingfuncties; goede fabriekskalibratie

Minpunten

Advertenties in het WebOS‑startscherm
Geen HDR10+‑ of DTS‑ondersteuning

Samsung The Frame Pro (2025) - Score 7/10

De Samsung The Frame Pro combineert een mat QLED‑scherm met een draadloze One Connect‑box. De matte coating voorkomt reflecties en de helderheid is verbeterd ten opzichte van eerdere Frames, maar de contrastweergave blijft achter bij andere topmodellen. De draadloze box verhoogt de input‑lag voor gamers, terwijl de micro‑HDMI‑ingang dit probleem oplost maar minder praktisch is. Het toestel heeft een slank design met verwisselbare lijsten en ondersteunt AirPlay 2 en Google Cast. De prijs is hoger dan die van de gewone Frame.

Pluspunten

Mat scherm met goede piekhelderheid en slank design; bijpassende lijsten en One Connect‑box
Vijf HDMI 2.1‑poorten, uitgebreide smart‑software en zeven jaar updates

Minpunten

Beperkte verbetering van contrast; geluid blijft middelmatig
Input‑lag via de draadloze box; geen Dolby Vision of DTS

Sony Bravia 8 II K‑65XR8M2 - Score 8/10

De Sony Bravia 8 II K‑65XR8M2 levert een indrukwekkend beeld met veel detail, goede schaduwwerking en sterke beeldverwerking. De OLED‑tv ondersteunt Dolby Vision en gebruikt Google TV, maar heeft slechts twee HDMI 2.1‑poorten (maximaal 4K @ 120 Hz) en haalt een iets lagere piekhelderheid dan concurrenten. Dankzij het Acoustic Surface‑audiosysteem klinkt hij beter dan veel platte tv’s en Sony Pictures Core biedt toegang tot films.

Pluspunten

Zeer goede beeldverwerking met mooie schaduwdetails en groot kleurbereik
Degelijk geluid dankzij Acoustic Surface; Google TV met veel apps

Minpunten

Lager piekniveau dan sommige concurrenten
Slechts twee HDMI 2.1‑poorten voor gaming

Widget:


TCL 55C6K - Score 8,9/10

De TCL 55C6K is een betaalbare mini‑LED‑tv met 180 local‑dimmingzones. In SDR levert hij mooie kleuren, maar in HDR is het contrast en de piekhelderheid relatief beperkt. Filmmaker‑ en film­modus zijn goed gekalibreerd en Google TV biedt een uitgebreid app‑aanbod. Twee HDMI 2.1‑poorten ondersteunen 4K @ 120 Hz en variabele refresh rates. Voor de prijs biedt de tv goede prestaties, al is de C6K soms duurder dan de betere C7K.

Pluspunten

Goede kleuren en kalibratie in SDR met Filmmaker‑modus; 180 dimmingzones
Ondersteunt Dolby Vision IQ, HDR10+ en twee HDMI 2.1‑poorten met gaming­functies

Minpunten

HDR‑prestaties beperkt door matige piekhelderheid en contrast
Het aantal dimmingzones beperkt de kijkhoek; eARC gebruikt een van de HDMI‑poorten

Philips 65OLED950 - Score 9/10

De Philips 65OLED950 is een high‑end OLED‑tv met het META‑3‑paneel, waardoor hij recordbrekende piekhelderheid en contrast levert. De vierzijdige Ambilight en uitstekende beeldverwerking maken HDR‑content zeer indrukwekkend. De tv ondersteunt alle HDR‑formaten, heeft goede gamingfuncties met twee HDMI 2.1‑poorten en biedt Google TV en AirPlay 2. Het geluid is ruimtelijk met Dolby Atmos en DTS:X, al zijn er soms lichte banding‑artefacten in donkere scènes.

Pluspunten

META 3‑paneel met zeer hoge piekhelderheid en vierzijdige Ambilight
Breed HDR‑aanbod, goede beeldverwerking en goede geluidsweergave

Minpunten

Soms banding in donkere scènes
Slechts twee HDMI 2.1‑poorten

Samsung QE65S95F - Score 9/10

De Samsung QE65S95F is een qd‑oled‑tv met een helderder scherm en matte coating. De beeldkwaliteit is uitstekend met diepe zwartwaarden, perfecte kijkhoeken en een groot kleurbereik. De One Connect‑box maakt het mogelijk om de tv kabelvrij op te hangen, maar de geluidskwaliteit is matig en er ontbreekt Google Cast. Met vier HDMI 2.1‑poorten en Tizen OS (met zeven jaar updates) is hij aantrekkelijk voor gamers.

Pluspunten

Zeer hoge piekhelderheid en perfect contrast; matte coating vermindert reflecties
Vier HDMI 2.1‑poorten, uitstekende kalibratie en uitgebreide gaming‑functies

Minpunten

Matige geluidskwaliteit
Geen Google Cast, Dolby Vision of DTS

LG OLED EVO 65G56LS - Score 9/10

De LG OLED EVO 65G56LS (G5) tilt OLED naar een nieuw niveau. De tv gebruikt een vernieuwd paneel met hoge piekhelderheid en groot kleurbereik; het dynamische Filmmaker‑profiel is nagenoeg referentiekwaliteit. Het Alpha 11‑procesor en WebOS 25 zorgen voor soepele beelden en handige AI‑functies, al leveren die laatste weinig meerwaarde. De ingebouwde luidsprekers klinken goed, maar DTS ontbreekt. Gamers profiteren van vier HDMI 2.1‑poorten en 4K @ 144 Hz. De prijs is hoog, maar LG levert vijf jaar software‑updates.

Pluspunten

Hoog piekniveau en brede kleurweergave dankzij nieuw OLED‑paneel; uitstekende beeldverwerking
Vier HDMI 2.1‑poorten en 4K @ 144 Hz; WebOS 25 met vijf jaar updates

Minpunten

Advertenties op het startscherm en geen HDR10+ of DTS
AI‑functies voegen weinig toe; adviesprijs is hoog

LG OLED65B4 - Score 9/10

De LG OLED65B4 biedt OLED‑prestaties tegen een relatief lage prijs. Het paneel is iets minder helder dan de topmodellen, maar biedt toch een mooi contrast en goede HDR‑beelden in Dolby Vision. De Alpha8‑processor levert nette beeldverwerking, al kunnen lichte banding‑verschijnselen in kleurverlopen voorkomen. WebOS 24 met vijf jaar updates is gebruiksvriendelijk. Vier HDMI 2.1‑poorten ondersteunen 4K @ 120 Hz en VRR.

Pluspunten

Mooie HDR‑beelden met goede kleurweergave en contrast; vier HDMI 2.1‑poorten
Betaalbare prijs voor oled‑prestaties; WebOS 24 met vijf jaar updates

Minpunten

Advertenties op het startscherm
Geen HDR10+‑ondersteuning en mogelijk banding in kleurverlopen

LG OLED65C4 - Score 9/10

De LG OLED65C4 bouwt voort op de C‑lijn en blijft een referentie voor wie een high‑end tv wil zonder de prijs van een G‑model. Hij gebruikt de Alpha9‑processor voor goede beeldverwerking en levert een hoge piekhelderheid met uitstekende kalibratie. WebOS 25 is snel, maar het startscherm bevat advertenties. De tv ondersteunt HDR10 en Dolby Vision, al is er geen HDR10+; de dynamische tonemapping compenseert dit. Vier HDMI 2.1‑poorten en goede gamemogelijkheden maken de tv compleet.

Pluspunten

Hoge piekhelderheid en goede beeldverwerking met Alpha9; nauwkeurige kalibratie
Vier HDMI 2.1‑poorten met uitstekende gamingfuncties

Minpunten

Advertenties in het WebOS‑startscherm
Geen HDR10+‑ondersteuning

Samsung QE55QN85D - Score 8/10

De Samsung QE55QN85D is een Neo QLED‑tv met solide prestaties maar zonder echte uitschieters. Het mini‑LED‑paneel biedt veel helderheid, goede contrasten en een groot kleurbereik; de Filmmaker‑modus is netjes gekalibreerd. Tizen Smart Hub levert veel functies en vier HDMI 2.1‑poorten maken de tv geschikt voor gamers. Geluid is redelijk, maar Dolby Vision en DTS ontbreken en het aantal dimmingzones beperkt de uniformiteit.

Pluspunten

Hoge piekhelderheid met goede contrasten en kleuren; nette kalibratie
Vier HDMI 2.1‑poorten en veel smart‑functies

Minpunten

Geen Dolby Vision of DTS
Beperkt aantal dimmingzones en matige kijkhoek

▼ Volgende artikel
𝙱̶𝚕̶𝚊̶𝚌̶𝚔̶ Check Friday bij Belsimpel: dit zijn de deals die je nú wilt pakken!
Huis

𝙱̶𝚕̶𝚊̶𝚌̶𝚔̶ Check Friday bij Belsimpel: dit zijn de deals die je nú wilt pakken!

Black Friday staat weer voor de deur, maar bij Belsimpel pakken ze dat net effe anders aan en noemen ze het Check Friday. Waarom? Omdat Belsimpel elke dag checkt wat nu écht de allerbeste deals zijn. En hoewel de Black Friday-prijzen al vlijmscherp zijn, weet Belsimpel daar met deze aanbiedingen zelfs nog iets af te schrapen. Wees er snel bij, want op is op!

Partnerbijdrage - in samenwerking met Belsimpel

Check Friday is Belsimpels eigen variant op Black Friday. Hier vind je deals die je hoe dan ook kunt vertrouwen: alles is al voor je gecheckt op prijs, service en kwaliteit. Zo weet je zeker dat je goed zit en kun je op je gemak de beste aanbieding kiezen. De prijzen zijn bij Belsimpel altijd al scherp, maar tijdens Check Friday pak je net dat extra voordeel.

Hieronder een selectie van de beste Check Friday-deals op een rij: van een premium koptelefoon tot populaire smartphones en een wel héél interessante sim-only-aanbieding. Deze wil je niet missen!


Apple iPhone 16 128GB Zwart: 54% goedkoper dan bij Apple

Adviesprijs: € 969 • Dealprijs: € 444 • Besparing: € 525 (54,2%)

Een iPhone 16 voor minder dan de helft van de officiële Apple-prijs. Je leest het goed: dankzij de Check Friday-deal via Odido betaal je voor het toestel zelf maar 444 euro. Geen eenmalige kosten, geen kleine lettertjes, wél pure winst.

Met de superkrachtige A18-chip, een lichtsterke 48MP-camera en een strak, verfijnd design haal je Apples één-na-nieuwste in huis zonder meteen je banksaldo het ziekenhuis in te duwen.

Gecheckt: dit is dé iPhone-deal van 2025!

👉 Ga direct naar deze deal


Sennheiser Momentum 4 Wireless: premium geluid, halve prijs

Adviesprijs: € 369,90 • Dealprijs: € 179 • Besparing: € 190,90 (51,6%)

Wat dacht je van 60 uur accuduur, kristalhelder geluid, actieve noise canceling die je collega's, baby's en buurmannen laat verdwijnen?

Voor 179 euro krijg je een topklasse koptelefoon voor een prijs die normaal alleen bij refurbished dumps voorkomt, maar dan dus nieuw, in doos, mét garantie.

Gecheckt: dit is een bijna belachelijk goede deal!

👉 Check deze deal hier!


Samsung Galaxy Watch 8 (44mm): bijna 200 euro goedkoper

Adviesprijs: € 409 • Dealprijs: € 228,95 • Besparing: € 180,05 (44%)

Samsungs nieuwste health- en fitnesswatch, uitgerust met saffierglas, een haarscherp amoledscherm en de nieuwste AI-functies.

Tijdens Black Friday betaal je 44 procent minder, en geloof ons: dat gebeurt met wearables bijna nooit.

Gecheckt: ideaal voor wie een serieuze upgrade zoekt zonder de volle prijs af te tikken.

👉 Pak deze deal nu hier!


Apple iPhone Air 256GB: high-end iPhone, scherpe prijs

Adviesprijs: € 1229 • Dealprijs: € 999 • Besparing: € 230 (18,7%)

De slankste iPhone ooit, met de A19 Pro-chip en een 48MP Fusion-camera. Deze iPhone is gloedjenieuw en nog amper ergens in de aanbieding geweest, en toch haalt Belsimpel er bijna 250 euro van af.

Gecheckt: voor wie een luxe iPhone wil, maar niet per se de 17 Pro hoeft!

👉 Check deze deal hier!


Samsung Galaxy S25 Ultra Blauw: dikke high-end korting

Adviesprijs: € 1449 • Dealprijs: € 929 • Besparing: € 520 (35,9%)

De Ultra-lijn is al jaren Samsungs absolute top. Een 200MP-camera, 6,9-inch 120Hz amoledscherm, Snapdragon 8 Elite for Galaxy: alles erop, eraan en ernaast.

Tijdens Black Friday krijg je hem voor 929 euro, iets wat je normaal alleen na een jaar ziet, niet al een paar maanden na release.

Gecheckt: een beest van een telefoon, een beest van een korting

👉 Pak deze deal nu!


Samsung Galaxy A56 5G: veel smartphone, weinig geld

Adviesprijs: € 529 • Dealprijs: € 329 • Besparing: € 200 (37,8%)

Samsungs nieuwste prijs-kwaliteitklapper. Groot amoledscherm, 50MP-camera, 5G en soepele prestaties. Met een korting van bijna 200 euro is dit dé keuze voor iedereen die een moderne, snelle telefoon wil zonder richting flagship-prijzen te gaan.

Gecheckt: dit is de beste betaalbare allrounder die je nu kunt krijgen!

👉 Wees slim en pak deze deal nu


Lebara Sim Only (10GB) + Sennheiser Momentum 4: dit wil je!

Waarde cadeau: € 369,90 • Abonnementskosten 24 maanden: € 144 • Voordeel: € 225,90

Dit is geen korting, dit is eigenlijk een soort magie. Je betaalt in totaal 144 euro voor twee jaar bellen, sms'en en internetten, en krijgt daar een dikke Sennheiser-koptelefoon ter waarde van 369,90 euro gratis bij! Juist, dezelfde als die hierboven staat, maar dan dus nóg interessanter.

Dat betekent dat je méér cadeau krijgt dan je betaalt voor het hele abonnement.

Gecheckt: weinig deals zijn zó ontzettend Black Friday als deze...

👉 Pak deze topdeal nú!


Samsung Galaxy S25 Ultra Zwart: nóg meer korting!

Adviesprijs: € 1449 • Toestelkosten via abonnement: € 696 • Besparing: € 753 (52%)

Zelfde toestel als de blauwe Ultra hierboven, maar in combinatie met Vodafone levert het nóg meer voordeel op. Je betaalt voor het toestel zelf maar 696 euro, wat neerkomt op ruim 750 euro korting op de adviesprijs!

Gecheckt:dit is de beste Ultra-deal van het jaar. Ja toch?

Pak deze deal dan!


Klaar om jouw deal te pakken?

Deze Black Friday-prijzen gelden zolang de voorraad het trekt, en ervaring leert dat dat nooit lang duurt. Wacht dus niet tot morgen en check deze deals!

👉 Bekijk nu alle Check Friday-deals bij Belsimpel en pak je voordeel zolang het kan