相关文章推荐
小百科
›
Calling Shell Commands from Python: OS.system vs Subprocess | HackerNoon
留胡子的汤圆
1 年前
</noscript><div id="__next" data-reactroot=""><div class="sc-9082497f-0 eIGtfn"><header class="sc-1112fac6-0 jOJdlw"><div class="mainNav" style="background:"><div class="left-portion"><div class="search-container active"><div class="input-holder"><div class="ais-SearchBox"><form novalidate="" class="ais-SearchBox-form" action="" role="search"><input type="search" placeholder="Discover Anything" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false" required="" maxlength="512" value="" class="ais-SearchBox-input"/><button type="submit" title="Submit your search query." class="ais-SearchBox-submit"><svg class="ais-SearchBox-submitIcon" xmlns="http://www.w3.org/2000/svg" width="10" height="10" viewbox="0 0 40 40"><path d="M26.804 29.01c-2.832 2.34-6.465 3.746-10.426 3.746C7.333 32.756 0 25.424 0 16.378 0 7.333 7.333 0 16.378 0c9.046 0 16.378 7.333 16.378 16.378 0 3.96-1.406 7.594-3.746 10.426l10.534 10.534c.607.607.61 1.59-.004 2.202-.61.61-1.597.61-2.202.004L26.804 29.01zm-10.426.627c7.323 0 13.26-5.936 13.26-13.26 0-7.32-5.937-13.257-13.26-13.257C9.056 3.12 3.12 9.056 3.12 16.378c0 7.323 5.936 13.26 13.258 13.26z"/></svg></button><button type="reset" title="Clear the search query." class="ais-SearchBox-reset" hidden=""><svg class="ais-SearchBox-resetIcon" xmlns="http://www.w3.org/2000/svg" viewbox="0 0 20 20" width="10" height="10"><path d="M8.114 10L.944 2.83 0 1.885 1.886 0l.943.943L10 8.113l7.17-7.17.944-.943L20 1.886l-.943.943-7.17 7.17 7.17 7.17.943.944L18.114 20l-.943-.943-7.17-7.17-7.17 7.17-.944.943L0 18.114l.943-.943L8.113 10z"/></svg></button></form></div><img src="https://hackernoon.com/search-new.png" class="search" alt="Search icon" width="19" height="19"/></div></div></div><a class="logo" tabindex="2" href="/"><img src="https://hackernoon.imgix.net/hn-logo.png" alt="Hackernoon logo" class="desktop" width="248" height="40"/><img src="https://hackernoon.imgix.net/hn-icon.png" alt="Hackernoon logo" class="mobile" width="37" height="40"/></a><div class="right-portion"><div class="sc-1112fac6-1 hPkExG"><a style="color:#003300;border-color:;background-color:" href="https://app.hackernoon.com/signup" class="sc-d22d78c4-0 dnnLsR">Start Writing</a><div style="width:86px;height:36px"/></div><div><img width="35" height="35" src="https://hackernoon.imgix.net/unread-bell.png" style="vertical-align:middle" alt="see notifications" class="sc-9aff7a2f-0 flYQYM"/><div class="sc-9aff7a2f-1 iBZgaW"><div class="header">Notifications</div><div class="content"/><div style="display:flex"><div class="more">see <!-- --> more</div></div></div></div><div class="sc-35c163c7-0 dQxNsz"><div data-focus-guard="true" tabindex="-1" style="width:1px;height:0px;padding:0;overflow:hidden;position:fixed;top:1px;left:1px"/><div data-focus-lock-disabled="disabled"><button aria-label="Toggle menu" aria-expanded="false" aria-controls="main-menu" class="sc-39a70a6c-0 dSlnyE"><i style="color:" aria-hidden="true" class="fas fa-bars"/></button><nav aria-hidden="true" style="background-color:" class="sc-e6769a8c-0 SDKzz"><a style="color:;border-color:" href="https://app.hackernoon.com/signup" class="cta-button signin">LOGIN / SIGNUP</a><div class="sc-e6769a8c-1 kcfJin"><ul style="background-color:" class="sc-90ddc8c6-0 lmJfmK"/></div></nav></div><div data-focus-guard="true" tabindex="-1" style="width:1px;height:0px;padding:0;overflow:hidden;position:fixed;top:1px;left:1px"/></div></div></div><div class="sc-83bf2253-0 hXLAAz subNav" style="background-color:;color:"><ul style="background-color:" class="sc-90ddc8c6-0 etbkcc"/></div><div><div style="background:;color:" class="sc-dc96e835-0 kicSUo"><a class="logo" href="/"><img src="/hn-logo.png" alt="Hackernoon logo"/></a><a style="color:" class="adLink" target="_blank" rel="sponsored"/><div class="colorPicker"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2725%27%20height=%2725%27/%3e"/></span><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img srcset="https://hackernoon.com/brush2.png?auto=format&fit=max&w=32 1x, https://hackernoon.com/brush2.png?auto=format&fit=max&w=64 2x" src="https://hackernoon.com/brush2.png?auto=format&fit=max&w=64" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" loading="lazy"/></noscript></span></div></div></div><div class="sc-6bce165-0 hfuoBJ story-nav show"><div class="title"><span class="story-title">Calling Shell Commands from Python: OS.system vs Subprocess</span><span class="by"> <!-- -->by</span><a class="profile" href="/u/marcosdelcueto">@<!-- -->marcosdelcueto</a></div><div class="sharing"/></div></header><div style="position:fixed;z-index:9999;top:16px;left:16px;right:16px;bottom:16px;pointer-events:none"/><main class="sc-9082497f-1 hjJhFE"><div class="sc-7cc1707-0 sc-5b38619e-0 gYiUmq dqInDU"><div class="sc-1b50eb50-0 BvPFd"><div class="metaContainer desktop-no-show"><div class="sc-1b50eb50-4 eWjCiv"><div class="sc-1b50eb50-3 efGOhs"><span class="stat"><i aria-hidden="true" class="fas fa-star"/> <!-- -->22,591<!-- --> <!-- -->reads</span></div></div></div><h1 class="story-title" style="text-align:left">Calling Shell Commands from Python: OS.system vs Subprocess</h1><div style="margin-bottom:20px"><div class="sc-1b50eb50-4 eWjCiv"><div class="sc-1b50eb50-3 efGOhs"><a href="/archives/2020/11/17">November 17th 2020</a><hr class="vertical"/><span class="readingTime">6<!-- -->m</span><hr class="vertical "/><span class="header-handle " data-tip="true" data-for="story-author" aria-label="bookmark story" data-delay-hide="1000"><span> by </span><a> @<!-- -->marcosdelcueto<!-- --> </a></span><span class="stat mobile-no-show"><i aria-hidden="true" class="fas fa-star"/> <!-- -->22,591<!-- --> <!-- -->reads</span><button data-tip="Bookmark story" aria-label="bookmark story" data-for="U2CG1GD2RERZHpJeRi6s" data-html="true" data-delay-hide="1000" class="sc-12ddb2ef-0 eJwuKy bookmark "><i aria-hidden="true" class="fas fa-bookmark "/></button></div></div></div><div class="metaContainer"><div class="sc-1b50eb50-4 eWjCiv"><div class="sc-1b50eb50-3 efGOhs"><div class="sc-1b50eb50-1 iNSZzj"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2750%27%20height=%2715%27/%3e"/></span><img alt="Open TLDR" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="tldr-logo" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Open TLDR" srcset="https://hackernoon.imgix.net/tl;dr-dark.png?auto=format&fit=max&w=64 1x, https://hackernoon.imgix.net/tl;dr-dark.png?auto=format&fit=max&w=128 2x" src="https://hackernoon.imgix.net/tl;dr-dark.png?auto=format&fit=max&w=128" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="tldr-logo" loading="lazy"/></noscript></span><img src="https://hackernoon.imgix.net/arrow-dark.png" alt="tldt arrow" width="12px" height="12px" class="tldr-arrow "/></div></div></div><div class="sc-1b50eb50-2 dsfeAR"><div class="sc-1b50eb50-7 GMKWK"><span class="lang selected-lang"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2720%27%20height=%2720%27/%3e"/></span><img src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="flag" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img srcset="https://hackernoon.imgix.net/images/usa_flag.webp?auto=format&fit=max&w=32 1x, https://hackernoon.imgix.net/images/usa_flag.webp?auto=format&fit=max&w=48 2x" src="https://hackernoon.imgix.net/images/usa_flag.webp?auto=format&fit=max&w=48" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="flag" loading="lazy"/></noscript></span><strong>EN</strong></span></div><div style="flex-shrink:0"><span style="display:flex;cursor:pointer" data-tip="true" data-for="terminal-view"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2725%27%20height=%2725%27/%3e"/></span><img alt="Read on Terminal Reader" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Read on Terminal Reader" srcset="https://hackernoon.imgix.net/computer.png?auto=format&fit=max&w=32 1x, https://hackernoon.imgix.net/computer.png?auto=format&fit=max&w=64 2x" src="https://hackernoon.imgix.net/computer.png?auto=format&fit=max&w=64" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" loading="lazy"/></noscript></span></span></div><div style="flex-shrink:0"><span style="display:flex;cursor:pointer"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2725%27%20height=%2725%27/%3e"/></span><img alt="Read this story w/o Javascript" data-tip="true" data-for="arweave-backup" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Read this story w/o Javascript" data-tip="true" data-for="arweave-backup" srcset="https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&fit=max&w=32 1x, https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&fit=max&w=64 2x" src="https://hackernoon.imgix.net/images/Lite%20Icon%20%4025px.png?auto=format&fit=max&w=64" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" loading="lazy"/></noscript></span></span></div></div></div><div class="tldr-no-show"><h2>Too Long; Didn't Read</h2> Calling Shell Commands from Python is useful to be familiar with how to call these commands efficiently from your Python code. In this short article, I discuss how to use the older (although still relatively common) os.system command and the newer subprocess command. I will show some of their potential risks, limitations and provide complete examples of their use. For example, the code below would be equivalent to the previouse code below. The article also provides examples of the use of these commands.<hr style="width:100%"/><div class="mentions-container"><div><h3>People Mentioned</h3><div><div class="sc-1b50eb50-5 kyVEHO"><a href="/u/anthony.p.shaw" style="text-decoration:none;text-align:left" target="_blank" rel="noopener noreferrer"><div class="img"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2770%27%20height=%2770%27/%3e"/></span><img data-tip="true" data-for="tldr-mention-anthony.p.shaw" alt="Mention Thumbnail" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="img" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:contain"/><noscript><img data-tip="true" data-for="tldr-mention-anthony.p.shaw" alt="Mention Thumbnail" srcset="https://hackernoon.imgix.net/images/avatars/385UsteCjITy7NHFVvGzQHeDNgO2.jpg?auto=format&fit=max&w=96 1x, https://hackernoon.imgix.net/images/avatars/385UsteCjITy7NHFVvGzQHeDNgO2.jpg?auto=format&fit=max&w=256 2x" src="https://hackernoon.imgix.net/images/avatars/385UsteCjITy7NHFVvGzQHeDNgO2.jpg?auto=format&fit=max&w=256" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:contain" class="img" loading="lazy"/></noscript></span></div></a></div></div></div><div><h3>Company<!-- --> Mentioned</h3><div><div title="Instagram" class="sc-1b50eb50-5 kyVEHO"><a href="/company/instagram" style="text-decoration:none;text-align:left" target="_blank" rel="noopener noreferrer"><div class="img"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2770%27%20height=%2770%27/%3e"/></span><img data-tip="true" data-for="tldr-mention-instagram" alt="Mention Thumbnail" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="img" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:contain"/><noscript><img data-tip="true" data-for="tldr-mention-instagram" alt="Mention Thumbnail" src="http://logo.bigpicture.io/logo/instagram.com" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:contain" class="img" loading="lazy"/></noscript></span></div></a></div></div></div></div></div></div><div class="sc-af254865-1 iippHf image-container feat"><button class="sc-af254865-0 isjaJY download-button"><a download="calling-shell-commands-from-python-os-system-vs-subprocess.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393" href="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-z31c23mp.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393" title="Download image"><i class="fa fa-download" color="currentColor"/></a></button><div data-rmiz-wrap="visible"><div style="position:relative"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%271200%27%20height=%27600%27/%3e"/></span><img alt="featured image - Calling Shell Commands from Python: OS.system vs Subprocess" srcset="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-z31c23mp.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393&auto=format&fit=max&w=1200 1x, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-z31c23mp.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393&auto=format&fit=max&w=3840 2x" src="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-z31c23mp.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393&auto=format&fit=max&w=3840" decoding="async" data-nimg="intrinsic" class="image" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:contain;background-size:contain;background-position:0% 0%;filter:blur(20px);background-image:url("data:image/svg+xml;base64,CiAgICA8c3ZnIHdpZHRoPSIxMjAwIiBoZWlnaHQ9IjYwMCIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIj4KICAgICAgPGRlZnM+CiAgICAgICAgPGxpbmVhckdyYWRpZW50IGlkPSJnIj4KICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMjIiIG9mZnNldD0iMiUiIC8+CiAgICAgICAgICA8c3RvcCBzdG9wLWNvbG9yPSIjMGYwIiBvZmZzZXQ9IjEwJSIgLz4KICAgICAgICAgIDxzdG9wIHN0b3AtY29sb3I9IiMyMjIiIG9mZnNldD0iMTIlIiAvPgogICAgICAgIDwvbGluZWFyR3JhZGllbnQ+CiAgICAgIDwvZGVmcz4KICAgICAgPHJlY3Qgd2lkdGg9IjEyMDAiIGhlaWdodD0iNjAwIiBmaWxsPSIjMjIyIiAvPgogICAgICA8cmVjdCBpZD0iciIgd2lkdGg9IjEyMDAiIGhlaWdodD0iNjAwIiBmaWxsPSJ1cmwoI2cpIiAvPgogICAgICA8YW5pbWF0ZSB4bGluazpocmVmPSIjciIgYXR0cmlidXRlTmFtZT0ieCIgZnJvbT0iLTEyMDAiIHRvPSIxMjAwIiBkdXI9IjFzIiByZXBlYXRDb3VudD0iaW5kZWZpbml0ZSIgIC8+CiAgICA8L3N2Zz4=")"/><noscript><img alt="featured image - Calling Shell Commands from Python: OS.system vs Subprocess" srcset="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-z31c23mp.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393&auto=format&fit=max&w=1200 1x, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-z31c23mp.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393&auto=format&fit=max&w=3840 2x" src="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-z31c23mp.jpeg?alt=media&token=114b3835-0128-48bb-b9ac-3b14d604f393&auto=format&fit=max&w=3840" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:contain" class="image"/></noscript></span></div><button aria-label="Zoom image" data-rmiz-btn-open="true"/></div></div><div class="tags underStory"><a class="sc-61133238-0 sc-44689c59-0 jwSAHQ jNCAGR parent-category" href="/c/programming"><span style="text-transform:uppercase">programming</span></a><a class="sc-61133238-0 sc-eaf68fb4-0 jwSAHQ jDocHt badgeColors" href="/tagged/python">#<!-- -->python</a><a class="sc-61133238-0 sc-eaf68fb4-0 jwSAHQ jDocHt badgeColors" href="/tagged/bash">#<!-- -->bash</a><a class="sc-61133238-0 sc-eaf68fb4-0 jwSAHQ jDocHt badgeColors" href="/tagged/python-tips">#<!-- -->python-tips</a><a class="sc-61133238-0 sc-eaf68fb4-0 jwSAHQ jDocHt badgeColors" href="/tagged/shell">#<!-- -->shell</a></div><div style="grid-column:1 / -1"/><div class="sc-7518eefd-0 dgTaRA profile"><div class="profileImageContainer "><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;top:0;left:0;bottom:0;right:0"><img alt="Marcos del Cueto HackerNoon profile picture" href="/u/marcosdelcueto" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" class="profileImage " style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="Marcos del Cueto HackerNoon profile picture" href="/u/marcosdelcueto" sizes="100vw" srcset="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=640 640w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=750 750w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=828 828w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=1080 1080w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=1200 1200w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=1920 1920w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=2048 2048w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=3840 3840w" src="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=3840" decoding="async" data-nimg="fill" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" class="profileImage " loading="lazy"/></noscript></span></div><div class="profile-details"><hr class="row-divider"/><h3 class="sideways"><a href="/u/marcosdelcueto" class="sc-3953247f-0 jZNWoa">@<!-- -->marcosdelcueto</a></h3><strong><small>Marcos del Cueto</small></strong><hr class="row-divider"/><p style="margin:0"/><div class="sc-f189490d-3 fEppmb"><hr class="row-divider"/><p>Receive Stories from @<!-- -->marcosdelcueto</p><form class="author-email-form"><div class="emailContainer"><input type="email" placeholder="name@company.com" name="email" required="" value=""/><button class="sc-f189490d-1 krYHWw plus-icon tooltip">SUBSCRIBE <i class="fal fa-newspaper"/><span class="tooltipbadge">SUBSCRIBE TO RECEIVE THIS WRITER'S CONTENT STRAIGHT TO YOUR INBOX!</span></button></div></form></div></div></div><div value="false" class="sc-ab66ccd5-0 ehEGgy"><div class="emojis-container"><div class="emojis unexpanded"><div><div class="single "><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%2730%27%20height=%2730%27/%3e"/></span><img data-usertype="user" data-emoji="heart" alt="react to story with heart" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="emoji not-active" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img data-usertype="user" data-emoji="heart" alt="react to story with heart" srcset="https://hackernoon.com/emojis/heart.png?auto=format&fit=max&w=32 1x, https://hackernoon.com/emojis/heart.png?auto=format&fit=max&w=64 2x" src="https://hackernoon.com/emojis/heart.png?auto=format&fit=max&w=64" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="emoji not-active" loading="lazy"/></noscript></span><img class="emoji-animation icon-1" width="15" height="24" src="https://hackernoon.com/emojis/heart.png" alt="reaction animation" aria-hidden="true"/><img class="emoji-animation icon-2" width="15" height="24" src="https://hackernoon.com/emojis/heart.png" alt="reaction animation" aria-hidden="true"/><img class="emoji-animation icon-3" width="15" height="24" src="https://hackernoon.com/emojis/heart.png" alt="reaction animation" aria-hidden="true"/></div></div></div></div></div><div><div/><div style="" class="sc-272af86b-7 jvwBnN"><button><i class="fas fa-pen"/></button><button><i class="fas fa-share-alt"/></button><button><i class="fas fa-copy"/></button><a style="margin-left:15px;color:white" href="#commentSection"><i class="fa-solid fa-comment-quote"/></a><button style="margin-right:10px"><i class="fa-solid fa-flag"/></button><div class="sc-272af86b-8 cFzQFw"/></div></div><footer><div class="sc-4421fc0d-0 kkbLrd"><div class="row"><div class="avatar " style="width:100px;height:100px;position:relative"><a href="/u/marcosdelcueto"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;top:0;left:0;bottom:0;right:0"><img alt="Marcos del Cueto HackerNoon profile picture" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover"/><noscript><img alt="Marcos del Cueto HackerNoon profile picture" sizes="100vw" srcset="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=640 640w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=750 750w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=828 828w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=1080 1080w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=1200 1200w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=1920 1920w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=2048 2048w, https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=3840 3840w" src="https://firebasestorage.googleapis.com/v0/b/hackernoon-app.appspot.com/o/images%2FI46my9ZHHAOa0gxfGDy1wYzWzs32-qb02304.png?alt=media&token=ea1ab16b-d067-42ca-8fc9-31b5c523a580&auto=format&fit=max&w=3840" decoding="async" data-nimg="fill" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:cover" loading="lazy"/></noscript></span></a></div><div class="author-info"><span>by <!-- -->Marcos del Cueto<!-- --> <span class="handle"><a href="/u/marcosdelcueto">@<!-- -->marcosdelcueto</a>.</span></span><span class="bio">PhD in Theoretical Chemistry. Interested in Machine Learning applied to materials discovery</span></div></div><a class="bio-cta" href="https://www.mdelcueto.com/blog?ref=hackernoon.com" rel="ugc"><i class="far fa-server" style="font-size:1.8rem"/>Visit my science and programming blog</a></div></footer><div id="commentSection"/><div class="adbytag"><div style="background-color:#009300" class="sc-98ff0015-0 bOglgE"><a href="https://www.pynt.io/?utm_source=mediabuying&utm_medium=banner&utm_campaign=hackernoon_ad_by_tagged_pages" target="_blank"><div class="info"><div style="height:100px;width:100px;position:relative"><span style="box-sizing:border-box;display:block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;top:0;left:0;bottom:0;right:0"><img alt="Pynt" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="fill" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:scale-down"/><noscript><img alt="Pynt" sizes="(max-width: 100px) 100px" srcset="https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=16 16w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=32 32w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=48 48w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=64 64w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=96 96w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=128 128w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=256 256w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=384 384w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=640 640w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=750 750w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=828 828w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=1080 1080w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=1200 1200w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=1920 1920w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=2048 2048w, https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=3840 3840w" src="https://cdn.hackernoon.com/images/img-v623pkd.png?auto=format&fit=max&w=3840" decoding="async" data-nimg="fill" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%;object-fit:scale-down" loading="lazy"/></noscript></span></div><p style="font-family:SF Pro Display;color:#FFFFFF;font-size:">Get free API security automated scan in minutes</p></div><div class="background"><div style="background-color:#29c929" class="l1"/><div style="background-color:#007200" class="d1"/><div style="background-color:#29c929" class="l2"/><div style="background-color:#29c929" class="l3"/><div style="background-color:#007200" class="d2"/><div style="background-color:#009300" class="m1"/></div></a></div></div><section><h4>RELATED STORIES</h4><section class="sc-38638eb8-0 dNweVP related-stories"><div class="sc-ce562d7b-0 cSVvRG"><div class="img"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27100%27%20height=%27100%27/%3e"/></span><img alt="Article Thumbnail" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="img" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Article Thumbnail" srcset="https://hackernoon.imgix.net/images/github/linux-0.png?auto=format&fit=max&w=128 1x, https://hackernoon.imgix.net/images/github/linux-0.png?auto=format&fit=max&w=256 2x" src="https://hackernoon.imgix.net/images/github/linux-0.png?auto=format&fit=max&w=256" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="img" loading="lazy"/></noscript></span></div><div class="text"><strong><a href="../257-stories-to-learn-about-linux" style="text-decoration:none;text-align:left" target="_blank" rel="noopener noreferrer">257 Stories To Learn About Linux</a></strong><div class="title"><span>Published at <!-- -->May 16, 2023<!-- --> by<!-- --> <a href="https://hackernoon.com/u/learn">learn</a></span><span class="related centered"> <a href="/tagged/linux"> #<!-- -->linux<!-- --> </a> </span></div></div></div><div class="sc-ce562d7b-0 cSVvRG"><div class="img"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27100%27%20height=%27100%27/%3e"/></span><img alt="Article Thumbnail" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="img" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Article Thumbnail" srcset="https://hackernoon.imgix.net/images/github/low-code-16.png?auto=format&fit=max&w=128 1x, https://hackernoon.imgix.net/images/github/low-code-16.png?auto=format&fit=max&w=256 2x" src="https://hackernoon.imgix.net/images/github/low-code-16.png?auto=format&fit=max&w=256" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="img" loading="lazy"/></noscript></span></div><div class="text"><strong><a href="../130-stories-to-learn-about-low-code" style="text-decoration:none;text-align:left" target="_blank" rel="noopener noreferrer">130 Stories To Learn About Low Code</a></strong><div class="title"><span>Published at <!-- -->May 16, 2023<!-- --> by<!-- --> <a href="https://hackernoon.com/u/learn">learn</a></span><span class="related centered"> <a href="/tagged/low-code"> #<!-- -->low-code<!-- --> </a> </span></div></div></div><div class="sc-ce562d7b-0 cSVvRG"><div class="img"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27100%27%20height=%27100%27/%3e"/></span><img alt="Article Thumbnail" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="img" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Article Thumbnail" srcset="https://hackernoon.imgix.net/images/eEEgu5i7oPT43ELXf3sIwzEfwUF3-ana3ptm.jpeg?auto=format&fit=max&w=128 1x, https://hackernoon.imgix.net/images/eEEgu5i7oPT43ELXf3sIwzEfwUF3-ana3ptm.jpeg?auto=format&fit=max&w=256 2x" src="https://hackernoon.imgix.net/images/eEEgu5i7oPT43ELXf3sIwzEfwUF3-ana3ptm.jpeg?auto=format&fit=max&w=256" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="img" loading="lazy"/></noscript></span></div><div class="text"><strong><a href="../a-comprehensive-guide-to-working-with-objects-and-shapes-in-fabricjs" style="text-decoration:none;text-align:left" target="_blank" rel="noopener noreferrer">A Comprehensive Guide to Working with Objects and Shapes in Fabric.js</a></strong><div class="title"><span>Published at <!-- -->May 16, 2023<!-- --> by<!-- --> <a href="https://hackernoon.com/u/prodeasy">prodeasy</a></span><span class="related centered"> <a href="/tagged/design"> #<!-- -->design<!-- --> </a> </span></div></div></div><div class="sc-ce562d7b-0 cSVvRG"><div class="img"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27100%27%20height=%27100%27/%3e"/></span><img alt="Article Thumbnail" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="img" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Article Thumbnail" srcset="https://hackernoon.imgix.net/images/PtsGBt2kzygziFTwJ0Jb7QC03I33-8tb3pil.jpeg?auto=format&fit=max&w=128 1x, https://hackernoon.imgix.net/images/PtsGBt2kzygziFTwJ0Jb7QC03I33-8tb3pil.jpeg?auto=format&fit=max&w=256 2x" src="https://hackernoon.imgix.net/images/PtsGBt2kzygziFTwJ0Jb7QC03I33-8tb3pil.jpeg?auto=format&fit=max&w=256" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="img" loading="lazy"/></noscript></span></div><div class="text"><strong><a href="../how-to-unlock-the-power-of-custom-usb-endpoints-wraspberrypi-pico-and-pyusb" style="text-decoration:none;text-align:left" target="_blank" rel="noopener noreferrer">How to Unlock the Power of Custom USB Endpoints w/RaspberryPi PICO and PYUSB</a></strong><div class="title"><span>Published at <!-- -->May 16, 2023<!-- --> by<!-- --> <a href="https://hackernoon.com/u/shekharverma">shekharverma</a></span><span class="related centered"> <a href="/tagged/raspberry-pi"> #<!-- -->raspberry-pi<!-- --> </a> </span></div></div></div><div class="sc-ce562d7b-0 cSVvRG"><div class="img"><span style="box-sizing:border-box;display:inline-block;overflow:hidden;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;position:relative;max-width:100%"><span style="box-sizing:border-box;display:block;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0;max-width:100%"><img style="display:block;max-width:100%;width:initial;height:initial;background:none;opacity:1;border:0;margin:0;padding:0" alt="" aria-hidden="true" src="data:image/svg+xml,%3csvg%20xmlns=%27http://www.w3.org/2000/svg%27%20version=%271.1%27%20width=%27100%27%20height=%27100%27/%3e"/></span><img alt="Article Thumbnail" src="data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7" decoding="async" data-nimg="intrinsic" class="img" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%"/><noscript><img alt="Article Thumbnail" srcset="https://hackernoon.imgix.net/images/2jqChkrv03exBUgkLrDzIbfM99q2-ki92bd1.jpeg?auto=format&fit=max&w=128 1x, https://hackernoon.imgix.net/images/2jqChkrv03exBUgkLrDzIbfM99q2-ki92bd1.jpeg?auto=format&fit=max&w=256 2x" src="https://hackernoon.imgix.net/images/2jqChkrv03exBUgkLrDzIbfM99q2-ki92bd1.jpeg?auto=format&fit=max&w=256" decoding="async" data-nimg="intrinsic" style="top:0;left:0;bottom:0;right:0;box-sizing:border-box;padding:0;border:none;margin:auto;display:block;width:0;height:0;min-width:100%;max-width:100%;min-height:100%;max-height:100%" class="img" loading="lazy"/></noscript></span></div><div class="text"><strong><a href="../how-to-create-a-personalized-product-recommender-using-shopifys-liquid-framework" style="text-decoration:none;text-align:left" target="_blank" rel="noopener noreferrer">How to Create a Personalized Product Recommender Using Shopify’s Liquid Framework</a></strong><div class="title"><span>Published at <!-- -->May 16, 2023<!-- --> by<!-- --> <a href="https://hackernoon.com/u/shugert">shugert</a></span><span class="related centered"> <a href="/tagged/shopify"> #<!-- -->shopify<!-- --> </a> </span></div></div></div></section></section><div style="display:flex;align-items:flex-end;justify-content:center"><div>L O A D I N G<br/>. . . comments & <span style="font-style:italic"> more!</span><br/></div></div></div></main><div style="background:;color:" class="sc-bc91e53-10 bsEANX"><span>Hackernoon hq - po box 2206, edwards, colorado 81632, usa</span></div></div></div>
推荐文章