{"id":391,"date":"2024-05-09T07:44:37","date_gmt":"2024-05-09T07:44:37","guid":{"rendered":"https:\/\/datadandies.nl\/?p=391"},"modified":"2024-05-09T07:44:37","modified_gmt":"2024-05-09T07:44:37","slug":"bestanden-in-twee-verschillende-folders-met-elkaar-vergelijken-met-behulp-van-python","status":"publish","type":"post","link":"https:\/\/datadandies.nl\/index.php\/2024\/05\/09\/bestanden-in-twee-verschillende-folders-met-elkaar-vergelijken-met-behulp-van-python\/","title":{"rendered":"Bestanden in twee verschillende folders met elkaar vergelijken met behulp van Python"},"content":{"rendered":"\n<p>Foto\u2019s. Ik heb er veel. Iedereen heeft al jaren een telefoon inclusief camera bij zich. Ik incluis. Dit leidt tot een berg foto\u2019s over de jaren heen. Ik heb ook wat oude backups van deze foto\u2019s in folders zitten. Ik ben nogal eens &#8230; fanatiek geweest met het maken van backups.<\/p>\n\n\n\n<p>Dit heeft geleid tot meerdere folders met foto\u2019s. Ik wist niet meer precies of folder A nou dezelfde foto\u2019s bevatte als folder B. Het aantal items in de folders was verschillend, maar wie weet had ik veel foto\u2019s dubbel!<\/p>\n\n\n\n<p>Wat doet iedere zichzelf respecterende data nerd in zo\u2019n geval?!<\/p>\n\n\n\n<p>&nbsp;Een kort Python script te schrijven wat onderzoekt of er overlap is natuurlijk! Met andere woorden, welke foto\u2019s had ik dubbel?<\/p>\n\n\n\n<p>Hieronder vind je het script.<\/p>\n\n\n\n<p>Veel succes met het foto album!<\/p>\n\n\n\n<div class=\"wp-block-kevinbatdorf-code-block-pro\" data-code-block-pro-font-family=\"Code-Pro-JetBrains-Mono\" style=\"font-size:.875rem;font-family:Code-Pro-JetBrains-Mono,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;line-height:1.25rem;--cbp-tab-width:2;tab-size:var(--cbp-tab-width, 2)\"><span style=\"display:block;padding:16px 0 0 16px;margin-bottom:-1px;width:100%;text-align:left;background-color:#2e3440ff\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"54\" height=\"14\" viewBox=\"0 0 54 14\"><g fill=\"none\" fill-rule=\"evenodd\" transform=\"translate(1 1)\"><circle cx=\"6\" cy=\"6\" r=\"6\" fill=\"#FF5F56\" stroke=\"#E0443E\" stroke-width=\".5\"><\/circle><circle cx=\"26\" cy=\"6\" r=\"6\" fill=\"#FFBD2E\" stroke=\"#DEA123\" stroke-width=\".5\"><\/circle><circle cx=\"46\" cy=\"6\" r=\"6\" fill=\"#27C93F\" stroke=\"#1AAB29\" stroke-width=\".5\"><\/circle><\/g><\/svg><\/span><span role=\"button\" tabindex=\"0\" data-code=\"# Programma dat de bestanden (en niet de subfolders) in twee verschillende folders met elkaar vergelijkt met als doel erachter te komen of er bepaalde bestanden ontbreken in de ene folder ten opzichte van de andere\nimport os\n\n# Paths defini\u00ebren\nPathFotoHardeschijf = 'c:\\\\Foto\\'s'\nPathFotoOnedrive = 'c:\\\\Users\\\\user1\\\\OneDrive\\\\Foto\\'s'\n\n# Lijst met alle items in de folders van de bovenstaande paths\nFotoHardeschijf = os.listdir(PathFotoHardeschijf)   # 9 items\nFotoOnedrive = os.listdir(PathFotoOnedrive)         # 8 items\n\n# Bepalen welke lijst het meeste items heeft om te zien welke als eerste te gebruiken in de loop\nprint(f'Aantal items in variabele FotoHardeschijf: {str(len(FotoHardeschijf))}\\nAantal items in variabele FotoOnedrive: {str(len(FotoOnedrive))}\\n')\n\n# Lege lijst cre\u00ebren om de missende items in op te slaan\nOntbrekend = []\n\n# Als het een bestand betreft en geen map, en het bestand niet voorkomt in variabele FotoOnedrive, zet hem dan in de lijst in variabele Ontbrekend\nfor bestand in FotoHardeschijf:\n    if not os.path.isfile(os.path.abspath(os.path.join(PathFotoHardeschijf, bestand))): # Is dit geen bestand?\n        continue                                                                        # Gan dan meteen door naar het begin van de loop zonder verder te gaan naar de if-statement hieronder. Oftewel, sla folders over.\n    if bestand not in FotoOnedrive:\n        Ontbrekend.append(bestand)\n\nprint(Ontbrekend)\" style=\"color:#d8dee9ff;display:none\" aria-label=\"Kopieer\" class=\"code-block-pro-copy-button\"><svg xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"width:24px;height:24px\" fill=\"none\" viewBox=\"0 0 24 24\" stroke=\"currentColor\" stroke-width=\"2\"><path class=\"with-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2m-6 9l2 2 4-4\"><\/path><path class=\"without-check\" stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 5H7a2 2 0 00-2 2v12a2 2 0 002 2h10a2 2 0 002-2V7a2 2 0 00-2-2h-2M9 5a2 2 0 002 2h2a2 2 0 002-2M9 5a2 2 0 012-2h2a2 2 0 012 2\"><\/path><\/svg><\/span><pre class=\"shiki nord\" style=\"background-color: #2e3440ff\" tabindex=\"0\"><code><span class=\"line\"><span style=\"color: #616E88\"># Programma dat de bestanden (en niet de subfolders) in twee verschillende folders met elkaar vergelijkt met als doel erachter te komen of er bepaalde bestanden ontbreken in de ene folder ten opzichte van de andere<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">import<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Paths defini\u00ebren<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">PathFotoHardeschijf <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">c:<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">Foto<\/span><span style=\"color: #EBCB8B\">\\&#39;<\/span><span style=\"color: #A3BE8C\">s<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">PathFotoOnedrive <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">&#39;<\/span><span style=\"color: #A3BE8C\">c:<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">Users<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">user1<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">OneDrive<\/span><span style=\"color: #EBCB8B\">\\\\<\/span><span style=\"color: #A3BE8C\">Foto<\/span><span style=\"color: #EBCB8B\">\\&#39;<\/span><span style=\"color: #A3BE8C\">s<\/span><span style=\"color: #ECEFF4\">&#39;<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Lijst met alle items in de folders van de bovenstaande paths<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">FotoHardeschijf <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">listdir<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">PathFotoHardeschijf<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">   <\/span><span style=\"color: #616E88\"># 9 items<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">FotoOnedrive <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">listdir<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">PathFotoOnedrive<\/span><span style=\"color: #ECEFF4\">)<\/span><span style=\"color: #D8DEE9FF\">         <\/span><span style=\"color: #616E88\"># 8 items<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Bepalen welke lijst het meeste items heeft om te zien welke als eerste te gebruiken in de loop<\/span><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #81A1C1\">f<\/span><span style=\"color: #A3BE8C\">&#39;Aantal items in variabele FotoHardeschijf: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">len<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">FotoHardeschijf<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #EBCB8B\">}\\n<\/span><span style=\"color: #A3BE8C\">Aantal items in variabele FotoOnedrive: <\/span><span style=\"color: #EBCB8B\">{<\/span><span style=\"color: #88C0D0\">str<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #88C0D0\">len<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">FotoOnedrive<\/span><span style=\"color: #ECEFF4\">))<\/span><span style=\"color: #EBCB8B\">}\\n<\/span><span style=\"color: #A3BE8C\">&#39;<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Lege lijst cre\u00ebren om de missende items in op te slaan<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">Ontbrekend <\/span><span style=\"color: #81A1C1\">=<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #ECEFF4\">[]<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #616E88\"># Als het een bestand betreft en geen map, en het bestand niet voorkomt in variabele FotoOnedrive, zet hem dan in de lijst in variabele Ontbrekend<\/span><\/span>\n<span class=\"line\"><span style=\"color: #81A1C1\">for<\/span><span style=\"color: #D8DEE9FF\"> bestand <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> FotoHardeschijf<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">not<\/span><span style=\"color: #D8DEE9FF\"> os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">isfile<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">abspath<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">os<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #D8DEE9FF\">path<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">join<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">PathFotoHardeschijf<\/span><span style=\"color: #ECEFF4\">,<\/span><span style=\"color: #D8DEE9FF\"> bestand<\/span><span style=\"color: #ECEFF4\">))):<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #616E88\"># Is dit geen bestand?<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        <\/span><span style=\"color: #81A1C1\">continue<\/span><span style=\"color: #D8DEE9FF\">                                                                        <\/span><span style=\"color: #616E88\"># Gan dan meteen door naar het begin van de loop zonder verder te gaan naar de if-statement hieronder. Oftewel, sla folders over.<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">    <\/span><span style=\"color: #81A1C1\">if<\/span><span style=\"color: #D8DEE9FF\"> bestand <\/span><span style=\"color: #81A1C1\">not<\/span><span style=\"color: #D8DEE9FF\"> <\/span><span style=\"color: #81A1C1\">in<\/span><span style=\"color: #D8DEE9FF\"> FotoOnedrive<\/span><span style=\"color: #ECEFF4\">:<\/span><\/span>\n<span class=\"line\"><span style=\"color: #D8DEE9FF\">        Ontbrekend<\/span><span style=\"color: #ECEFF4\">.<\/span><span style=\"color: #88C0D0\">append<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">bestand<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span>\n<span class=\"line\"><\/span>\n<span class=\"line\"><span style=\"color: #88C0D0\">print<\/span><span style=\"color: #ECEFF4\">(<\/span><span style=\"color: #D8DEE9FF\">Ontbrekend<\/span><span style=\"color: #ECEFF4\">)<\/span><\/span><\/code><\/pre><\/div>\n","protected":false},"excerpt":{"rendered":"<p>Foto\u2019s. Ik heb er veel. Iedereen heeft al jaren een telefoon inclusief camera bij zich. Ik incluis. Dit leidt tot een berg foto\u2019s over de jaren heen. Ik heb ook wat oude backups van deze foto\u2019s in folders zitten. Ik ben nogal eens &#8230; fanatiek geweest met het maken van backups. Dit heeft geleid tot&hellip;<\/p>\n<p class=\"more-link\"><a href=\"https:\/\/datadandies.nl\/index.php\/2024\/05\/09\/bestanden-in-twee-verschillende-folders-met-elkaar-vergelijken-met-behulp-van-python\/\" class=\"themebutton\">Read More<\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[37],"class_list":["post-391","post","type-post","status-publish","format-standard","hentry","category-blog","tag-python"],"_links":{"self":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/391","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/comments?post=391"}],"version-history":[{"count":1,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/391\/revisions"}],"predecessor-version":[{"id":392,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/posts\/391\/revisions\/392"}],"wp:attachment":[{"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/media?parent=391"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/categories?post=391"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/datadandies.nl\/index.php\/wp-json\/wp\/v2\/tags?post=391"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}