ID.nl logo
Zo kun je programmeren in Python - Deel 5
© PXimport
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
Waar moet je op letten bij het kiezen van een inbouwvriezer?
© MG | ID.nl
Huis

Waar moet je op letten bij het kiezen van een inbouwvriezer?

Wanneer je kiest voor een inbouwvriezer werk je deze natuurlijk het liefst netjes weg achter een mooie keukendeur. Je vindt ze in hoogtes van 72 tot 178 cm, maar ook als onderbouw diepvrieskast die onder je aanrechtblad passen. Waar moet je allemaal nog meer op letten bij een inbouwvriezer voordat je deze aanschaft?

Een inbouwvriezer biedt als voornaamste voordeel dat de kast mooi is weggewerkt in je keuken. Juist daarom is het belangrijk om vooraf goed op een aantal zaken te letten als je zo’n vriezer wilt kopen.

Formaten

Inbouwvriezers zijn te koop in een aantal vaste maten. Die maten zijn gestandaardiseerd, zodat het eenvoudig is om de juiste inbouwvriezer bij de juiste inbouwkast te kopen en andersom. De ruimte in een inbouwkeuken waar de inbouwvriezer komt, is ietsje groter dan de inbouwvriezer zelf. Logisch, omdat zo'n inbouwvriezer wel makkelijk geplaatst moet kunnen worden, maar er ook weer eenvoudig uit moet kunnen in geval van reparatie of vervanging.

Bij een inbouwvriezer kun je kiezen uit de volgende hoogtes: 72, 88, 102, 122, 140, 178 en 180 cm. De breedte van inbouwvriezers ligt doorgaans tussen de 54 en 56 cm, het is dus belangrijk dat de breedte van de nis hierop is afgestemd. De diepte van een inbouwvriezer kan ook iets variëren, maar 54,5 cm is doorgaans de gemiddelde diepte. Je kunt ook kiezen voor een ondervriezer; een losse kleinere kast van zo'n 80 cm hoog die past onder het aanrechtblad.

Bij de aanschaf van een inbouwvriezer of elke inbouwapparatuur vind je altijd de informatie over de grootte van de nis. De nis is de plek in de inbouwkeuken waarin de inbouwapparatuur wordt geplaatst. Deze informatie is dus erg belangrijk bij het kiezen voor de juiste inbouwvriezer en de gewenste keuken.

©MG | ID.nl

Scharnier- en deursystemen

Bij de aanschaf van een inbouwvriezer houd je rekening met het soort scharniersysteem dat je wil gebruiken. Er zijn twee soorten deursystemen: deur-op-deurscharnieren en sleepdeursystemen. Bij een deur-op-deursysteem wordt de deur van de keuken direct op de deur van de vriezer geplaatst en is er geen speling tussen beide deuren.

Bij een sleepsysteem wordt de vriezerdeur met een glijd- of sleepsysteem bevestigd aan de keukendeur. Hierdoor schuift de deur van de keuken over de koelkastdeur. De deuren bewegen dan afzonderlijk van elkaar. Zo'n systeem komt het vaakst voor en is ook het eenvoudigst te installeren.

Watch on YouTube

Bij een deur-op-deursysteem wordt het paneel van de keukendeur direct op de deur van de vriezer gemonteerd. Het keukenpaneel draait dus op hetzelfde moment als de vriezerdeur. Voor een deur-op-deursysteem heeft de vriezer andere scharnieren die het gewicht van zowel de deur van de vriezer als het keukenpaneel moeten kunnen dragen. Bij een inbouwvriezer die geschikt is voor een deur-op-deursysteem, wordt het buitenste gedeelte van de vriezerdeur los geleverd.

Ventilatie

Een vriezer produceert aan de achterzijde warmte. Deze warmte moet goed kunnen worden afgevoerd en dat kan alleen als de nis waar de inbouwvriezer in wordt geplaatst, voldoende ruimte aan de achterkant heeft. De achterkant van de nis houd je vanzelfsprekend open en moet aan de achterkant tussen de muur en de vriezer minstens 10 centimeter vrijgehouden worden. Bij sommige inbouwvriezers krijg je aparte spacers mee die je op de achterkant van de vriezer kunt monteren om de juiste afstand te behouden, zodat je de vriezer ook niet te ver richting muur kunt plaatsen.

©MG | ID.nl

Geluidsdemping

Het geluid van een inbouwvriezer kan soms als storend worden ervaren. Dit geluid bestaat doorgaans uit twee componenten: luchtgeluid, zoals het brommen van de compressor, en contactgeluid, veroorzaakt door trillingen die via het meubel kunnen worden doorgegeven. Zowel vrijstaande- als inbouwmodellen kunnen hier last van hebben, maar met wat aanpassingen kun je het geluid reduceren. Zorg voor voldoende ventilatieruimte rondom de vriezer. Ga je gebruik maken van geluidsabsorberende materialen , houd er dan rekening mee dat deze warmte vasthouden.

Om luchtgeluid te dempen, kan aan de achterkant en eventueel zijkanten van de nis of de muur geluidsabsorberend materiaal worden bevestigd. Dit materiaal vangt het geluid van de compressor op en voorkomt dat het zich verder door de ruimte verspreidt. Er zijn hier verschillende soorten platen en strips voor verkrijgbaar.

Zoek een stil exemplaar

Omdat het lastig is om een inbouwapparaat van tevoren te testen op geluidsproductie, kun je natuurlijk in ieder geval alvast kijken naar de specificaties van een inbouwvriezer. Bij doorgaans alle online winkels vind je de relevante informatie over geluidsproductie bij de specificaties. Het maximaal hoorbare geluid wordt weergegeven in Decibel, afgekort als dB. Gemiddeld produceren inbouwvriezers een geluid van rond de 35 en 40 dB, maar dit zijn natuurlijk alleen piekmomenten, bijvoorbeeld als de compressor aanslaat. De informatie over de geluidsproductie vind je overigens ook op het energielabel, zie hieronder.

Zuinigheid

Tot slot moeten we het energieverbruik natuurlijk niet vergeten. Hoe zuiniger een inbouwvriezer is, hoe meer geld je op het gebruik ervan bespaart. Dankzij de specificaties en het welbekende energielabel koop je eenvoudig een energiezuinig model. Je ziet dan bij de specificaties ook wat een inbouwvriezer op jaarbasis aan energie verbruikt.

©EPREL

▼ Volgende artikel
Waar voor je geld: 5 krachtige hogedrukreinigers voor minder dan 275 euro
© MG | ID.nl
Huis

Waar voor je geld: 5 krachtige hogedrukreinigers voor minder dan 275 euro

Bij ID.nl zijn we gek op producten waar je niet de hoofdprijs voor betaalt. Een paar keer per week speuren we daarom binnen een bepaald thema naar zulke deals. Met een hogedrukreiniger maak je je oprit, terras en tuinbestrating grondig schoon. Wij vonden vijf krachtige modellen voor je.

Een hogedrukreiniger is ideaal voor het schoonmaken van terrassen, opritten, tuinmeubels, auto’s en schuttingen. Je hebt minder schoonmaakmiddelen nodig en bespaart tijd en moeite. Dankzij verstelbare spuitkoppen pas je de waterstraal aan per klus. Zo maak je efficiënt en veilig schoon, zelfs op lastig bereikbare plekken. Met behulp van handige accessoires zoals een autowasborstel kun je een hogedrukreiniger ook gebruiken voor auto's, aanhangers, caravans en campers. Wij hebben een vijftal betaalbare hogedrukreinigers voor je gevonden.

DISCLAIMER

De genoemde maximum prijs van 275 euro was correct tijdens het schrijven van dit artikel. De prijzen van producten op Kieskeurig.nl kunnen echter varieren, en kunnen inmiddels dus hoger of lager zijn.

Bosch UniversalAquatak 135

Deze compacte machine van Bosch zet moeiteloos 410 l/uur water af dankzij zijn krachtige 1900 W motor. De slang van 7 meter geeft je een groot bereik. Met een werkdruk tot 135 bar verwijdert hij eenvoudig hardnekkig vuil van fiets, oprit of terras. De geïntegreerde slanghaspel en opbergruimte voor accessoires maken hem erg gebruiksvriendelijk. Ondanks zijn lichte gewicht (7,9 kg), staat de Aquatak 135 stevig dankzij wielen en een telescopisch handvat. Hij is geschikt tot een watertemperatuur van 40 °C en geleverd inclusief nozzle‑set. Zijn compacte profiel en degelijke prestaties maken ‘m ideaal voor dagelijks gebruik in en om het huis.

Maximale druk: 135bar
Vermogen: 1900 Watt
Slanglengte: 7m
Opslagtank: 0,45 liter
Meegeleverde accessoires: lans, vuilfrees

Wat is een vuilfrees?

Een vuilfrees is een speciaal opzetstuk voor een hogedrukreiniger dat wordt gebruikt om hardnekkig vuil effectief te verwijderen. De vuilfrees bestaat uit een roterende waterstraal met hoge druk, waardoor het reinigingsvermogen aanzienlijk wordt verhoogd. Dit maakt het heel geschikt voor het schoonmaken van sterk vervuilde oppervlakken zoals bestrating, terrastegels en andere harde buitenoppervlakken. Een vuilvrees is echter niet geschikt voor auto's, campers of caravans. Het kan namelijk de lak of deur- en raamrubbers beschadigen.

Nilfisk Excellent 170

De Nilfisk Excellent 170 is een stevige krachtpatser met een inductiemotor en metalen pomp, ontworpen voor intensief gebruik. Hij levert maar liefst 170 bar en rond de 498 l/uur aan waterflow en dat is ideaal voor grote oppervlakken zoals terrassen of gevels . De SteelFlex-slang van 10 meter in combinatie met de interne haspel zorgt voor moeiteloze bereikbaarheid en opberging. Uniek is de Power Foam Blaster (700 ml) die zorgt voor rijke schuimlaag voor grondige reiniging, bijvoorbeeld van auto’s of tuinmeubilair. De machine schakelt bij spuitstop automatisch uit, en gaat weer aan bij gebruik, waarmee je dus energie kunt besparen. Met een gewicht van zo'n 21,5 kg is hij wat zwaarder dan gemiddeld, maar staat stevig op wielen en een telescoopgreep voor verplaatsing.

Maximale druk: 170 bar
Vermogen: 2100 Watt
Slanglengte: 10m
Opslagtank: 0,7 liter (voor foam)
Meegeleverde accessoires: Vuilfrees, oppervlakreiniger

Kärcher K 2 Basic

De K 2 Basic van Kärcher is een degelijk instapmodel voor eenvoudigere reiningsklusjes, zoals voor fietsen, tuinmeubels of lichte vervuiling. Deze machine levert tot 110 bar werkdruk en 360 l/uur waterflow vanuit een 1400 W motor. Hij is compact, weegt slechts 4 kg (zonder accessoires) en voorzien van twee wieltjes voor eenvoudige verplaatsing. De slang is 3 m lang, wat minder bereik biedt, maar praktisch is voor het dichtbij reinigen. Inclusief waterfilter en Quick Connect-systeem, plus diverse spuitstukken zoals een lans en vuilfrees. Dit toestel is ideaal voor gebruikers die een effectief, budgetvriendelijk toestel zoeken voor eenvoudig onderhoud rondom huis.

Maximale druk: 110 bar
Vermogen: 1400 Watt
Slanglengte: 3m
Opslagtank: geen
Meegeleverde accessoires: lans, vuilfrees

Powerplus POWXG90410

De Powerplus POWXG90410 combineert kracht en flexibiliteit in één: zijn 1800 W motor levert tot 140 bar en 420 l/uur waterflow, perfect voor het grondig reinigen van oprit, tuin of voertuigen. De slang van 8 m en een soepel oprolmechanisme maken werken zonder gedoe makkelijk. De tank van 0,75 liter voor reinigingsmiddel is ideaal voor gecombineerde schoonmaakbeurten. Hij beschikt over turbospuit, patio-cleaner en verstelbare lans en is uitgerust met wieltjes en auto start/stop voor bedieningsgemak en veiligheid. Weegt ongeveer 7,7 kg — handzaam en goed te manoeuvreren.

Maximale druk: 140 bar
Vermogen: 1800 Watt
Slanglengte: 8m
Opslagtank: 0,75 liter
Meegeleverde accessoires: lans, vuilfrees

EZIclean Hydroforce 165

Deze Eziclean Hydroforce 165 is uitgerust met een krachtige 2200 W motor waarmee hij tot 165 bar haalt — ideaal voor intensieve klussen zoals terras en auto’s schoonmaken . De slang van 5 meter biedt voldoende reikwijdte dichtbij de kraan. Inclusief 0,75 l reinigingstank en een ruime selectie aan spuitmonden, waaronder een turbomondstuk met 180° draaibare straal en 360°-draaifunctie – handig voor diverse oppervlakken. Het lage gewicht van zo'n 9,2 kg en wieltjes plus haspel maken het verplaatsen eenvoudig. Robuust, veelzijdig en ideaal voor huishoudelijk en zwaar buitengebruik.

Maximale druk: 165 bar
Vermogen: 2200 Watt
Slanglengte: 5m
Opslagtank: 0,75 liter
Meegeleverde accessoires: autowasborstel, lans, oppervlakreiniger