<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Vikram Aruchamy</title>
    <description>The latest articles on Forem by Vikram Aruchamy (@vikramaruchamy).</description>
    <link>https://forem.com/vikramaruchamy</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F501589%2F20429b77-f1d0-48e5-bb1b-5e2589d1d58a.png</url>
      <title>Forem: Vikram Aruchamy</title>
      <link>https://forem.com/vikramaruchamy</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/vikramaruchamy"/>
    <language>en</language>
    <item>
      <title>[Boost]</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Fri, 04 Jul 2025 12:29:30 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/-mjg</link>
      <guid>https://forem.com/vikramaruchamy/-mjg</guid>
      <description>&lt;div class="ltag__link--embedded"&gt;
  &lt;div class="crayons-story "&gt;
  &lt;a href="https://dev.to/vikramaruchamy/chatgpt-to-google-doc-mai" class="crayons-story__hidden-navigation-link"&gt;ChatGPT to Google Doc&lt;/a&gt;


  &lt;div class="crayons-story__body crayons-story__body-full_post"&gt;
    &lt;div class="crayons-story__top"&gt;
      &lt;div class="crayons-story__meta"&gt;
        &lt;div class="crayons-story__author-pic"&gt;

          &lt;a href="/vikramaruchamy" class="crayons-avatar  crayons-avatar--l  "&gt;
            &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F501589%2F20429b77-f1d0-48e5-bb1b-5e2589d1d58a.png" alt="vikramaruchamy profile" class="crayons-avatar__image"&gt;
          &lt;/a&gt;
        &lt;/div&gt;
        &lt;div&gt;
          &lt;div&gt;
            &lt;a href="/vikramaruchamy" class="crayons-story__secondary fw-medium m:hidden"&gt;
              Vikram Aruchamy
            &lt;/a&gt;
            &lt;div class="profile-preview-card relative mb-4 s:mb-0 fw-medium hidden m:inline-block"&gt;
              
                Vikram Aruchamy
                
              
              &lt;div id="story-author-preview-content-2655355" class="profile-preview-card__content crayons-dropdown branded-7 p-4 pt-0"&gt;
                &lt;div class="gap-4 grid"&gt;
                  &lt;div class="-mt-4"&gt;
                    &lt;a href="/vikramaruchamy" class="flex"&gt;
                      &lt;span class="crayons-avatar crayons-avatar--xl mr-2 shrink-0"&gt;
                        &lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F501589%2F20429b77-f1d0-48e5-bb1b-5e2589d1d58a.png" class="crayons-avatar__image" alt=""&gt;
                      &lt;/span&gt;
                      &lt;span class="crayons-link crayons-subtitle-2 mt-5"&gt;Vikram Aruchamy&lt;/span&gt;
                    &lt;/a&gt;
                  &lt;/div&gt;
                  &lt;div class="print-hidden"&gt;
                    
                      Follow
                    
                  &lt;/div&gt;
                  &lt;div class="author-preview-metadata-container"&gt;&lt;/div&gt;
                &lt;/div&gt;
              &lt;/div&gt;
            &lt;/div&gt;

          &lt;/div&gt;
          &lt;a href="https://dev.to/vikramaruchamy/chatgpt-to-google-doc-mai" class="crayons-story__tertiary fs-xs"&gt;&lt;time&gt;Jul 4 '25&lt;/time&gt;&lt;span class="time-ago-indicator-initial-placeholder"&gt;&lt;/span&gt;&lt;/a&gt;
        &lt;/div&gt;
      &lt;/div&gt;

    &lt;/div&gt;

    &lt;div class="crayons-story__indention"&gt;
      &lt;h2 class="crayons-story__title crayons-story__title-full_post"&gt;
        &lt;a href="https://dev.to/vikramaruchamy/chatgpt-to-google-doc-mai" id="article-link-2655355"&gt;
          ChatGPT to Google Doc
        &lt;/a&gt;
      &lt;/h2&gt;
        &lt;div class="crayons-story__tags"&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/chatgpt"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;chatgpt&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/googledocs"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;googledocs&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/convert"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;convert&lt;/a&gt;
            &lt;a class="crayons-tag  crayons-tag--monochrome " href="/t/equations"&gt;&lt;span class="crayons-tag__prefix"&gt;#&lt;/span&gt;equations&lt;/a&gt;
        &lt;/div&gt;
      &lt;div class="crayons-story__bottom"&gt;
        &lt;div class="crayons-story__details"&gt;
            &lt;a href="https://dev.to/vikramaruchamy/chatgpt-to-google-doc-mai#comments" class="crayons-btn crayons-btn--s crayons-btn--ghost crayons-btn--icon-left flex items-center"&gt;
              Comments


              &lt;span class="hidden s:inline"&gt;Add Comment&lt;/span&gt;
            &lt;/a&gt;
        &lt;/div&gt;
        &lt;div class="crayons-story__save"&gt;
          &lt;small class="crayons-story__tertiary fs-xs mr-2"&gt;
            5 min read
          &lt;/small&gt;
            
              &lt;span class="bm-initial"&gt;
                

              &lt;/span&gt;
              &lt;span class="bm-success"&gt;
                

              &lt;/span&gt;
            
        &lt;/div&gt;
      &lt;/div&gt;
    &lt;/div&gt;
  &lt;/div&gt;
&lt;/div&gt;

&lt;/div&gt;


</description>
      <category>chatgpt</category>
      <category>googledocs</category>
      <category>convert</category>
      <category>equations</category>
    </item>
    <item>
      <title>ChatGPT to Google Doc</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Fri, 04 Jul 2025 12:28:00 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/chatgpt-to-google-doc-mai</link>
      <guid>https://forem.com/vikramaruchamy/chatgpt-to-google-doc-mai</guid>
      <description>&lt;p&gt;Maintaining a clear and organized record of your ChatGPT conversations is essential, especially when they contain important summaries, complex code, or detailed explanations.&lt;/p&gt;

&lt;p&gt;While ChatGPT provides a native &lt;strong&gt;copy&lt;/strong&gt; button for individual responses, it copies the content in &lt;a href="https://daringfireball.net/projects/markdown/" rel="noopener noreferrer"&gt;Markdown&lt;/a&gt; format. When the copied Markdown is pasted into Google Docs or Word, the formatting is often lost or inconsistent. Additionally, there’s no built-in option to copy or export an entire conversation—making it tedious to save longer threads or full sessions.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can convert ChatGPT content into Google Doc using the &lt;a href="https://chromewebstore.google.com/detail/chatgpt-to-google-docs-or/oibghjgooccojibfacdonaoipegckdeg" rel="noopener noreferrer"&gt;ChatGPT to Google Docs or PDF&lt;/a&gt; Chrome Extension.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/chatgpt-to-google-docs-or/oibghjgooccojibfacdonaoipegckdeg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folss7adhrxzu328g2rus.png" alt="Available in Chrome Web Store" width="496" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This powerful tool simplifies the process of exporting ChatGPT responses into well-formatted Google Docs, Word, or PDF files, making them easy to share, store, or further edit.&lt;/p&gt;

&lt;p&gt;Let’s explore how this extension can help streamline your workflow.&lt;/p&gt;

&lt;h2&gt;
  
  
  Installating the Extension
&lt;/h2&gt;

&lt;p&gt;The &lt;strong&gt;ChatGPT to Google Docs or PDF&lt;/strong&gt; Chrome extension can be installed in just a few clicks. Follow the steps below to get started on &lt;strong&gt;Google Chrome&lt;/strong&gt; or &lt;strong&gt;Microsoft Edge&lt;/strong&gt;.&lt;/p&gt;

&lt;h3&gt;
  
  
  Installing on Google Chrome
&lt;/h3&gt;

&lt;p&gt;&lt;a href="https://chromewebstore.google.com/detail/chatgpt-to-google-docs-or/oibghjgooccojibfacdonaoipegckdeg" rel="noopener noreferrer"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Folss7adhrxzu328g2rus.png" alt="Available in Chrome Web Store" width="496" height="150"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://chromewebstore.google.com/detail/chatgpt-to-google-docs-or/oibghjgooccojibfacdonaoipegckdeg" rel="noopener noreferrer"&gt;Chrome Web Store listing&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;"Add to Chrome"&lt;/strong&gt; button.&lt;/li&gt;
&lt;li&gt;Confirm the installation by clicking &lt;strong&gt;"Add extension"&lt;/strong&gt; in the popup.&lt;/li&gt;
&lt;li&gt;You should now see the extension icon in your browser toolbar.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Installing on Microsoft Edge
&lt;/h3&gt;

&lt;p&gt;Even though this is a Chrome extension, Microsoft Edge supports installing extensions directly from the Chrome Web Store.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open the &lt;a href="https://chromewebstore.google.com/detail/chatgpt-to-google-docs-or/oibghjgooccojibfacdonaoipegckdeg" rel="noopener noreferrer"&gt;Chrome Web Store listing&lt;/a&gt; in Microsoft Edge.&lt;/li&gt;
&lt;li&gt;If prompted, click &lt;strong&gt;Allow&lt;/strong&gt; to enable installation of extensions from other stores.&lt;/li&gt;
&lt;li&gt;Then click &lt;strong&gt;"Add to Chrome"&lt;/strong&gt; and confirm the installation.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;Once installed, the extension works the same way in both browsers.&lt;/p&gt;

&lt;h3&gt;
  
  
  Refresh ChatGPT after Installing Extension
&lt;/h3&gt;

&lt;p&gt;After installation:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Open ChatGPT and refresh the page.&lt;/li&gt;
&lt;li&gt;You’ll now see &lt;strong&gt;"Google Docs", "Word" and "PDF"&lt;/strong&gt; buttons appear below each response and at the top-right of the conversation.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Exporting Single Response From ChatGPT into Google Doc
&lt;/h2&gt;

&lt;p&gt;When you want to save just one specific response, such as a code snippet, a definition, or a key insight, from a longer ChatGPT conversation, the extension lets you export it instantly into a Google Doc.&lt;/p&gt;

&lt;p&gt;To convert ChatGPT's single response into a Google Docs, follow the steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; Open any conversation on &lt;a href="https://chatgpt.com" rel="noopener noreferrer"&gt;ChatGPT&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt; Navigate to the individual response you wish to export.&lt;/li&gt;
&lt;li&gt; Look for the &lt;strong&gt;Google Docs&lt;/strong&gt;, &lt;strong&gt;Word&lt;/strong&gt;, and &lt;strong&gt;PDF&lt;/strong&gt; buttons conveniently located at the bottom right corner of each response.&lt;/li&gt;
&lt;li&gt; Click the Google Docs button. The content from the single response will be exported into a Google Docs and the output document will open automatically.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xml06fq18gzmc29nl44.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2xml06fq18gzmc29nl44.png" alt="Exporting Single Response From ChatGPT into Google Doc" width="800" height="533"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;What gets preserved?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;The exported file maintains the original formatting, saving you from tedious manual adjustments:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Headings and paragraph structure&lt;/li&gt;
&lt;li&gt;Bullet points and numbered lists&lt;/li&gt;
&lt;li&gt;Code blocks and Markdown formatting&lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.freecodecamp.org/news/write-math-equations-in-google-docs/" rel="noopener noreferrer"&gt;Math equations&lt;/a&gt; (rendered perfectly in Google Docs, Word and PDF)&lt;/li&gt;
&lt;li&gt;Tables and indentation&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;No extra formatting required – the document is ready to use or share.&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; This is perfect for quickly saving helpful code snippets, or concise explanations without the hassle of copying and pasting.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;p&gt;You can improve clarity and structure by grouping the two export options under clearly labeled subheadings and using parallel phrasing. Here's a more polished and professional version without changing the meaning:&lt;/p&gt;

&lt;h2&gt;
  
  
  Exporting Entire ChatGPT Conversation to Google Doc
&lt;/h2&gt;

&lt;p&gt;Whether you're documenting a research session, project discussion, or keeping a complete record of your AI interactions, exporting the entire conversation can be invaluable. The extension gives you flexibility to include or exclude your own prompts.&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 1: Exporting entire Conversation with User Prompts
&lt;/h3&gt;

&lt;p&gt;To export the full conversation, including both your prompts and ChatGPT’s responses,follow the below steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open any ChatGPT conversation at &lt;a href="https://chat.openai.com/" rel="noopener noreferrer"&gt;chat.openai.com&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Locate the &lt;strong&gt;Google Docs&lt;/strong&gt;, &lt;strong&gt;Word&lt;/strong&gt;, or &lt;strong&gt;PDF&lt;/strong&gt; button at the &lt;strong&gt;top right corner&lt;/strong&gt; of the conversation window.&lt;/li&gt;
&lt;li&gt;Click the &lt;strong&gt;Google Docs&lt;/strong&gt; button to export the entire conversation into a Google Doc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3b3fgucw9hy5s8095r6.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm3b3fgucw9hy5s8095r6.png" alt="Exporting Entire ChatGPT Conversation to Google Doc" width="800" height="501"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h3&gt;
  
  
  Option 2: Export Only ChatGPT Responses (Excluding User Prompts)
&lt;/h3&gt;

&lt;p&gt;If you want to save only the AI’s output—useful for compiling answers, articles, or summaries without your input, you can disable prompt export by following the below steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Click the &lt;strong&gt;Settings&lt;/strong&gt; icon at the top right of the ChatGPT conversation page.&lt;/li&gt;
&lt;li&gt;In the &lt;strong&gt;Settings&lt;/strong&gt; popup, enable the checkbox labeled &lt;strong&gt;Export only ChatGPT responses&lt;/strong&gt; under the &lt;strong&gt;Conversion Settings&lt;/strong&gt; section.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1y0yb0pvhuv9wnvsi420.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1y0yb0pvhuv9wnvsi420.png" alt="Export Only ChatGPT Responses Excluding User Prompts" width="800" height="490"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This setting is saved automatically and will apply to all future exports until you disable it.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Exporting ChatGPT Canvas Content into a Google Doc
&lt;/h2&gt;

&lt;p&gt;For those utilizing ChatGPT's Canvas mode in GPT-4 or team accounts, the extension also provides a dedicated export feature for your visual and structured content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;How to export Canvas content:&lt;/strong&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt; &lt;strong&gt;Maximize the canvas&lt;/strong&gt; so it's fully open on your screen.&lt;/li&gt;
&lt;li&gt; Once maximized, look for the &lt;strong&gt;Google Docs&lt;/strong&gt;, &lt;strong&gt;Word&lt;/strong&gt;, or &lt;strong&gt;PDF&lt;/strong&gt; button in the &lt;strong&gt;top right corner&lt;/strong&gt; of the canvas.&lt;/li&gt;
&lt;li&gt; Click the Google Docs button to export the Canvas content into a clean Google Doc.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucflpx9jipfat03nucpy.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fucflpx9jipfat03nucpy.png" alt="Exporting ChatGPT Canvas Content into a Google Doc" width="800" height="312"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Important Behavior:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;If the &lt;strong&gt;Canvas is open&lt;/strong&gt;, clicking the Google Docs button available at the top will export &lt;strong&gt;only the Canvas content&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;If the &lt;strong&gt;Canvas is closed&lt;/strong&gt;, the same buttons will revert to exporting the &lt;strong&gt;entire conversation&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;What gets exported?&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When exporting from Canvas mode, the extension ensures:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Only the Canvas content is exported.&lt;/li&gt;
&lt;li&gt;The structure, formatting, and any math equations (if present) are perfectly preserved.&lt;/li&gt;
&lt;/ul&gt;

&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Tip:&lt;/strong&gt; This feature is invaluable for saving structured diagrams, mind maps, or other visual outputs created within Canvas mode, ensuring you capture precisely what you've designed.&lt;/p&gt;
&lt;/blockquote&gt;

&lt;h2&gt;
  
  
  Problems Solved by the ChatGPT to Google Docs or PDF Chrome Extension
&lt;/h2&gt;

&lt;p&gt;The ChatGPT to Google Docs or PDF Chrome Extension addresses two common pain points:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;It allows you to &lt;strong&gt;export content from ChatGPT into Google Docs without losing formatting&lt;/strong&gt;, preserving headings, lists, code blocks, and more.&lt;/li&gt;
&lt;li&gt;It allows you to &lt;strong&gt;copy and paste math equations from ChatGPT into Google Docs&lt;/strong&gt;, rendering them accurately without manual adjustments.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftakqqjaubqiqvnhxl4jg.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ftakqqjaubqiqvnhxl4jg.png" alt="copy and paste math equations from ChatGPT into Google Docs" width="800" height="500"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This ensures clean, structured documents, ready to share, edit, or publish.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The ChatGPT to Google Docs or PDF Chrome Extension is an essential tool for anyone who regularly works with ChatGPT content. &lt;/p&gt;

&lt;p&gt;It streamlines the process of exporting responses—eliminating the need for manual copying, fixing formatting issues, or dealing with broken math equations. &lt;/p&gt;

&lt;p&gt;With just a click, your AI-generated content is seamlessly transformed into a clean, structured Google Doc or PDF, ready for sharing, editing, or archiving.&lt;/p&gt;

&lt;p&gt;Whether you're saving summaries, code, research notes, or equations, this extension simplifies your workflow and enhances productivity. Try it out and experience a more efficient way to manage your ChatGPT interactions.&lt;/p&gt;

</description>
      <category>chatgpt</category>
      <category>googledocs</category>
      <category>convert</category>
      <category>equations</category>
    </item>
    <item>
      <title>Export Google Docs to PDF, But Smarter: Merge, Protect, and Export with Ease</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Tue, 21 Jan 2025 12:35:36 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/export-google-docs-to-pdf-but-smarter-merge-protect-and-export-with-ease-3jlb</link>
      <guid>https://forem.com/vikramaruchamy/export-google-docs-to-pdf-but-smarter-merge-protect-and-export-with-ease-3jlb</guid>
      <description>&lt;p&gt;&lt;a href="https://workspace.google.com/marketplace/app/docs_to_pdf_pro/302636103705" rel="noopener noreferrer"&gt;Exporting Google Docs to PDF&lt;/a&gt; is a common requirement for professionals, students, and businesses. Google Docs provides a built-in method to convert documents to PDF format, which can be accessed through the "File" menu. Here’s how you can do it using the native method:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Open your Google Docs document.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;File &amp;gt; Download &amp;gt; PDF Document (.pdf)&lt;/strong&gt;.&lt;/li&gt;
&lt;li&gt;The document will be downloaded in PDF format to your local storage.&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;While this method is straightforward and effective for basic document exports, it comes with several limitations.&lt;/p&gt;

&lt;h2&gt;
  
  
  Limitations of Native Google Docs PDF Export
&lt;/h2&gt;

&lt;p&gt;Despite its simplicity, the built-in PDF export feature in Google Docs has some significant drawbacks:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Only the first tab is exported&lt;/strong&gt; - Google introduced the &lt;a href="https://workspaceupdates.googleblog.com/2024/10/tabs-in-google-docs.html" rel="noopener noreferrer"&gt;multi-tab feature in Google Docs&lt;/a&gt;, allowing users to organize content better. However, the native PDF export function only captures the content from the first tab, ignoring all subsequent tabs. If you have content organized in multiple tabs, they are not included.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No password protection&lt;/strong&gt; - Google Docs does not offer any options to secure the exported PDF with a password, which can be a critical requirement for sensitive documents.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;No option to merge multiple Google Docs into a single PDF&lt;/strong&gt; - If you have multiple documents that need to be combined into one PDF file, you must download them separately and use external tools to merge them, which can be time-consuming and inefficient.&lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;These limitations can pose challenges for users who require more advanced document handling capabilities. This is where &lt;strong&gt;Docs to PDF Pro&lt;/strong&gt; comes in.&lt;/p&gt;

&lt;h2&gt;
  
  
  Introducing Docs to PDF Pro
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Docs to PDF Pro&lt;/strong&gt; is a powerful Google Docs add-on that overcomes the limitations of the native export feature and provides a comprehensive solution for all your PDF conversion needs. Here’s what it offers:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Merge Multiple Google Docs into a Single PDF&lt;/strong&gt; - Select multiple Google Docs and combine them into one cohesive PDF document.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Export All Tabs in a Multi-Tabbed Google Doc&lt;/strong&gt; - Ensure that all tabs within your Google Docs file are included in the final exported PDF.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Password-Protected PDF Export&lt;/strong&gt; - Add an extra layer of security by applying password protection to your exported PDFs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Local File Upload and PDF Conversion&lt;/strong&gt; - Convert local Word or text files to PDF directly from within the Google Docs interface.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  How to Export Google Docs to PDF Using Docs to PDF Pro
&lt;/h2&gt;

&lt;h3&gt;
  
  
  Installation Steps
&lt;/h3&gt;

&lt;ol&gt;
&lt;li&gt;Install the &lt;a href="https://workspace.google.com/marketplace/app/docs_to_pdf_pro/302636103705" rel="noopener noreferrer"&gt;Docs to PDF Pro&lt;/a&gt; add-on from the Google Workspace Marketplace.&lt;/li&gt;
&lt;li&gt;Open your Google Docs document and navigate to &lt;strong&gt;Extensions&lt;/strong&gt; &amp;gt; &lt;strong&gt;Docs to PDF Pro&lt;/strong&gt; &amp;gt; &lt;strong&gt;Convert Docs to PDF&lt;/strong&gt; option.&lt;/li&gt;
&lt;li&gt;Choose the desired options, such as merging multiple documents, exporting all tabs, or adding password protection.&lt;/li&gt;
&lt;li&gt;Click on &lt;strong&gt;Export&lt;/strong&gt; to generate your customized PDF.&lt;/li&gt;
&lt;/ol&gt;

&lt;h3&gt;
  
  
  Features Explained
&lt;/h3&gt;

&lt;p&gt;Once the add-on is launched, you will see the following options:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozeh6z3u2xjkhkrughz9.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fozeh6z3u2xjkhkrughz9.png" alt="Docs to PDF Pro UI" width="582" height="400"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Conversion Settings (Optional):&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Include tab names as pages when exporting multi-tabbed documents&lt;/strong&gt; - Ensures that each tab's name in your document is included in the exported PDF as separate pages. This helps you identify to which the content belongs to.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Merge all selected documents into a single PDF&lt;/strong&gt; - Allows combining multiple Google Docs into one comprehensive PDF file. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;PDF Password Protection (Optional):&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Enable password protection for the output PDF&lt;/strong&gt; - Secure your confidential &lt;a href="https://www.mergedocs.pro/export-google-docs-as-password-protected-pdf" rel="noopener noreferrer"&gt;Google Docs by exporting them as password-protected PDFs&lt;/a&gt;. Enter a password in the provided field to safeguard sensitive documents like contracts or legal agreements during export.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Output Destination:&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Download PDF files and save a backup to Google Drive&lt;/strong&gt; - Automatically saves a copy of the PDF to your Google Drive while downloading it locally.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Save PDF files only to Google Drive&lt;/strong&gt; - Stores the generated PDF exclusively in your Google Drive.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Download PDF files only&lt;/strong&gt; - Downloads the PDF directly to your computer without saving it to Google Drive.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;After selecting the appropriate settings, you can choose from the following actions:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;Convert Current Document to PDF&lt;/strong&gt; - Exports the currently open Google Docs into PDF format&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Select Multiple Documents &amp;amp; Convert to PDF&lt;/strong&gt; - Allows selection of multiple Google Docs for converting them to PDF based on the selected settings.&lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;Upload Local File(s) &amp;amp; Convert to PDF&lt;/strong&gt; - Enables conversion of locally stored documents to PDF format.&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;With Docs to PDF Pro, you can unlock the full potential of your document exports, ensuring efficiency, security, and flexibility.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;While the native Google Docs export feature is useful for basic needs, it falls short when it comes to handling complex document requirements. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docs to PDF Pro&lt;/strong&gt; offers an all-in-one solution to address these shortcomings, making it easier than ever to merge, protect, and export Google Docs with ease. Whether you're dealing with multi-tabbed documents or need secure PDFs, this add-on is the perfect companion for your workflow.&lt;/p&gt;

</description>
      <category>googledocs</category>
      <category>convert</category>
      <category>pdf</category>
    </item>
    <item>
      <title>How to Convert Markdown to Google Docs</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Tue, 30 Apr 2024 09:01:11 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/how-to-convert-markdown-to-google-docs-37f</link>
      <guid>https://forem.com/vikramaruchamy/how-to-convert-markdown-to-google-docs-37f</guid>
      <description>&lt;p&gt;Markdown's simplicity and readability make it a popular choice for drafting content, but when it comes to sharing or collaborating on documents, Google Docs offers powerful collaboration features and accessibility. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can convert Markdown into Google Docs using the Docs to Markdown Pro add-on.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this guide, I'll show how to convert Markdown files into Google Docs using the &lt;strong&gt;Docs to Markdown Pro add on&lt;/strong&gt; with formatting.  &lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Docs to Markdown Pro
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://workspace.google.com/marketplace/app/docs_to_markdown_pro/483386994804?pann=b&amp;amp;utm_source=dev.to&amp;amp;utm_medium=md-to-docs-post-badge&amp;amp;utm_id=addon" rel="noopener"&gt;&lt;br&gt;
  &lt;img alt="Google Workspace Marketplace badge" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fworkspace.google.com%2Fstatic%2Fimg%2Fmarketplace%2Fen%2FgwmBadge.svg%3F"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can visit the &lt;a href="https://workspace.google.com/marketplace/app/docs_to_markdown_pro/483386994804?pann=b&amp;amp;utm_source=dev.to&amp;amp;utm_medium=md-to-docs-post&amp;amp;utm_id=addon"&gt;Docs to Markdown Pro&lt;/a&gt; page in Google Workspace Marketplace and click &lt;strong&gt;Install&lt;/strong&gt;. &lt;/p&gt;

&lt;p&gt;The add on will be installed in you account. &lt;/p&gt;

&lt;h2&gt;
  
  
  Converting Markdown to Google Docs using Docs to Markdown Pro
&lt;/h2&gt;

&lt;p&gt;To convert the Markdown into Google Docs, first launch the converter by selecting the Menu &lt;strong&gt;Extensions&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Docs to Markdown Pro&lt;/strong&gt; -&amp;gt; &lt;strong&gt;Convert Markdown or HTML to Docs&lt;/strong&gt; option as shown in the following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjf85t5ngya0p97r6zoa8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjf85t5ngya0p97r6zoa8.png" alt="Launching the converter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The Markdown to Google Docs converter dialog will be displayed as follows. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m2j5h7vsvmiwz7injyi.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2m2j5h7vsvmiwz7injyi.png" alt="Markdown to Google Docs Converter"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Now to convert the Markdown into Google Docs, follow the below steps:&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Paste the Markdown into the input text box&lt;/li&gt;
&lt;li&gt;Select the desired target Google Docs - Whether to insert at the end of the current Document or to create a new Google Docs with the Markdown content&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Convert&lt;/strong&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;The Markdown will be converted into Google Docs and inserted into the current document or a new document based on the selected input. &lt;/p&gt;

&lt;p&gt;All the styles including tables, table borders and the images are supported in the add on. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://workspace.google.com/marketplace/app/docs_to_markdown_pro/483386994804?pann=b&amp;amp;utm_source=dev.to&amp;amp;utm_medium=md-to-docs-post-badge&amp;amp;utm_id=addon" rel="noopener"&gt;&lt;br&gt;
  &lt;img alt="Google Workspace Marketplace badge" src="https://media.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fworkspace.google.com%2Fstatic%2Fimg%2Fmarketplace%2Fen%2FgwmBadge.svg%3F"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Docs to Markdown Pro - Other Features
&lt;/h2&gt;

&lt;p&gt;Docs to Markdown Pro is a comprehensive add-on that bridges the gap between Google Docs and Markdown. &lt;/p&gt;

&lt;p&gt;It has all the features needed for the users who work with both Google Docs for collaborative writing/editing and Markdown for ease of writing. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Converts Google Docs to Markdown&lt;/li&gt;
&lt;li&gt;Converts Markdown to Google Docs&lt;/li&gt;
&lt;li&gt;Converts Google Docs to Clean HTML&lt;/li&gt;
&lt;li&gt;Converts HTML to Google Docs&lt;/li&gt;
&lt;li&gt;Publishes the Google Docs as Markdown to GitHub/GitLab&lt;/li&gt;
&lt;/ol&gt;

&lt;h2&gt;
  
  
  Some Usecases of the Markdown to Google Docs
&lt;/h2&gt;

&lt;p&gt;This addon helps you in the following use case where you need to convert Markdown into Google Docs. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copy a Markdown from ChatGPT to Google Docs&lt;/li&gt;
&lt;li&gt;Copy a Markdown from Gemini to Google Docs&lt;/li&gt;
&lt;li&gt;Copy a Markdown from CoPilot to Google Docs&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;It also helps you paste the ChatGPT Markdown into Google Docs without background.&lt;/p&gt;

&lt;h2&gt;
  
  
  Can Google Docs open a Markdown file?
&lt;/h2&gt;

&lt;p&gt;Yes, Google Docs can open the Markdown file. But the Markdown file must be available in the Google Drive already to open it in Google Docs. However, the text will still be in the Markdown format. It will NOT be converted into the rich text format. &lt;/p&gt;

&lt;p&gt;If you need to open the Markdown file in Google Docs and the text in the rich text format, you need to insert the Markdown into Google Docs using the add-on Docs to Markdown Pro.&lt;/p&gt;

&lt;p&gt;If you have any questions, feel free to comment below. &lt;/p&gt;

</description>
      <category>markdown</category>
      <category>googledocs</category>
      <category>convert</category>
    </item>
    <item>
      <title>Wordable Alternative</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Tue, 30 Apr 2024 06:24:04 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/wordable-alternative-53f6</link>
      <guid>https://forem.com/vikramaruchamy/wordable-alternative-53f6</guid>
      <description>&lt;p&gt;Wordable.io is a tool that helps users publish Google Docs to WordPress.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Docs to WP Pro is the best alternative to Wordable, because of its features, ease of use and affordable pricing.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this post, I’ll explain the &lt;a href="https://www.docstowp.pro"&gt;Docs to WP Pro&lt;/a&gt; features and why it is better when compared to Wordable.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://workspace.google.com/marketplace/app/docs_to_wp_pro/346830534164?pann=b&amp;amp;utm_source=dev.to&amp;amp;utm_medium=top&amp;amp;utm_id=app_home"&gt;&lt;br&gt;
  &lt;img alt="Google Workspace Marketplace badge" src="https://res.cloudinary.com/practicaldev/image/fetch/s--h8_QT9wR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://workspace.google.com/static/img/marketplace/en/gwmBadge.svg%3F" width="417" height="68"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Docs to WP Pro vs Wordable
&lt;/h2&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Features&lt;/th&gt;
&lt;th&gt;Docs to WP Pro&lt;/th&gt;
&lt;th&gt;WordPress&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Export directly from Google Docs&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Number of clicks to publish&lt;/td&gt;
&lt;td&gt;1&lt;/td&gt;
&lt;td&gt;&amp;gt; 5&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Classic editor support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Gutenberg editor support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Semantic internal links&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Accessibility checks&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Reading time info&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Featured image support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image compression&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Image alt text&lt;/td&gt;
&lt;td&gt;From Google Docs image properties&lt;/td&gt;
&lt;td&gt;Add a separate tag, before the image&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Readability score&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEO checks&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Focus Keyword&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Yoast support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RankMath support&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Default Taxonomies&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;New tag addition&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Custom post types&lt;/td&gt;
&lt;td&gt;Yes&lt;/td&gt;
&lt;td&gt;No&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Separate interface for publishing&lt;/td&gt;
&lt;td&gt;No, one-click publishing from Google Docs&lt;/td&gt;
&lt;td&gt;Separate interface&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Pricing starts from&lt;/td&gt;
&lt;td&gt;$ 39 per year, for up to 400 WordPress exports. No limits on the number of posts per month. Also, supports two WordPress sites.&lt;/td&gt;
&lt;td&gt;$ 29 per year, for up to 120 posts, capped at 10 posts per month. Only one WordPress site allowed&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;h2&gt;
  
  
  Features of Docs to WP Pro - A Wordable Alternative
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsv66wg8b740hwje9jzur.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fsv66wg8b740hwje9jzur.png" alt="Docs to WP Pro add on sidebar" width="301" height="739"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Docs to WP Pro streamlines publishing Google Docs to WordPress and optimizes your content with data-driven features, including:&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Safe and Secure&lt;/strong&gt; - Data and credentials are encrypted using a 32-bit encryption key and stored securely using Google's industry-leading security measures. Your unique 32-bit encryption key is protected within the User Properties service, ensuring your information is completely isolated and accessible only to you.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Asks for least possible oauth permission&lt;/strong&gt; - Docs to WP Pro asks to access only the current document you work on. It doesn't ask to access all your Google Docs documents or the Google Drive files. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;SEO Suggestions&lt;/strong&gt; - Checks all the necessary SEO suggestions as similar to &lt;a href="https://yoast.com/"&gt;Yoast&lt;/a&gt; or &lt;a href="https://rankmath.com/"&gt;RankMath&lt;/a&gt;, including focus keyword placement in the title, content, keyword density, content readability, alt text in images, meta descriptions, and all the necessary SEO best practices, and suggests corrections.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Semantic internal links using AI&lt;/strong&gt; - With a single click, Docs to WP Pro can find the potential keyword in your Google Docs content and create appropriate internal links. It helps in improving the SEO of your content.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Link suggestions with contextual data&lt;/strong&gt; - It also suggests internal links with useful data such as &lt;em&gt;relevance score&lt;/em&gt;, &lt;em&gt;existing number of internal links&lt;/em&gt;, &lt;em&gt;published date&lt;/em&gt; and &lt;em&gt;update date&lt;/em&gt;. This helps in adding highly relevant posts as Related posts and the data assists in balanced internal link distribution.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Image Compression&lt;/strong&gt; - Optionally, it allows you to compress the images before publishing them to the WordPress media library and helps keep the media library sleek.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Yoast and RankMath Support&lt;/strong&gt; - Allows you to set focus keywords and meta descriptions and update them to the Yoast or the RankMath fields in WordPress. This keeps the Yoast or Rank Math data consistent for posts, regardless of whether you publish from Google Docs or the WordPress dashboard.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Custom Post Types&lt;/strong&gt; - It helps you publish not only WordPress posts or Pages but any type of custom posts you create on your site.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Classic &amp;amp; Gutenberg Editor Support&lt;/strong&gt; - Compatible with both Classic and Gutenberg WordPress editors. If your site uses the Classic editor, the content is published as plain HTML. If it’s using Gutenberg, the content is published as Gutenberg blocks. The only plugin that supports the creation of Gutenberg blogs. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Content Link Tracking Using Google Sheets&lt;/strong&gt; - When you publish a post, an entry is published to a consolidated Google Sheets. This way it is easy for you to check which Google Docs is Published to Which WordPress post. You can directly open the Google Docs from this sheet to update the content and push the update to WordPress in a single click.&lt;/p&gt;

&lt;p&gt;With all these features at affordable pricing, the Docs to WP Pro add-on is the best alternative for Wordable.io. &lt;/p&gt;

</description>
      <category>wordpress</category>
      <category>googledocs</category>
      <category>seo</category>
      <category>links</category>
    </item>
    <item>
      <title>How to Convert PDF File into a Google Docs</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Sat, 27 Apr 2024 05:38:08 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/how-to-convert-pdf-file-into-a-google-docs-57li</link>
      <guid>https://forem.com/vikramaruchamy/how-to-convert-pdf-file-into-a-google-docs-57li</guid>
      <description>&lt;p&gt;A PDF (Portable Document Format) file is a versatile document format that preserves the layout and formatting of a document, making it ideal for sharing and viewing across different platforms and devices.&lt;/p&gt;

&lt;p&gt;However, it cannot be edited directly. Hence, to make any updates or modifications, you must convert it to Google Docs. &lt;/p&gt;

&lt;p&gt;Converting PDF files to Google Docs allows for easy editing, collaboration, and sharing in real time, enhancing productivity and workflow efficiency. &lt;/p&gt;

&lt;p&gt;In this tutorial, I'll show you how to &lt;a href="https://www.pdftodocs.com"&gt;convert a PDF into a Google Docs&lt;/a&gt; without loosing the formatting using the PDF to Docs Editor Add-on. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://workspace.google.com/marketplace/app/pdf_to_docs/28755135712?pann=b"&gt;&lt;br&gt;
  &lt;img alt="Google Workspace Marketplace badge" src="https://res.cloudinary.com/practicaldev/image/fetch/s--h8_QT9wR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://workspace.google.com/static/img/marketplace/en/gwmBadge.svg%3F" width="417" height="68"&gt;&lt;br&gt;
&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;The add-on allows you to convert a local PDF file or a PDF file available in Google Drive into Google Docs. &lt;/p&gt;

&lt;h2&gt;
  
  
  Installing the PDF to Docs Add-on
&lt;/h2&gt;

&lt;p&gt;To install the add-on, navigate to the &lt;a href="https://workspace.google.com/marketplace/app/pdf_to_docs/28755135712"&gt;PDF to Docs&lt;/a&gt; app page and click &lt;strong&gt;Install&lt;/strong&gt;. It asks for the necessary permissions. Click &lt;em&gt;Allow&lt;/em&gt; to complete the installation. The reason why each permission is necessary is explained in the next section. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcguriewon6hldscyw50b.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fcguriewon6hldscyw50b.png" alt="Add on Permissions screen" width="491" height="598"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once the add-on is installed, launch the add-on using the menu &lt;em&gt;Extensions&lt;/em&gt; -&amp;gt; &lt;em&gt;PDF to Docs&lt;/em&gt; -&amp;gt; &lt;em&gt;Convert PDF to Docs&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w0kd4elbdlcvsy88xd5.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F6w0kd4elbdlcvsy88xd5.png" alt="Launching the Add on" width="608" height="326"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Add on Permissions
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;strong&gt;See, edit, create, and delete all your Google Docs documents&lt;/strong&gt; - This permission is necessary to be able to read the PDF files available in Google Drive when you choose to convert the PDF files available in Google Drive into Google Docs. &lt;/li&gt;
&lt;li&gt;
&lt;strong&gt;See, edit, create, and delete only the specific Google Drive files you use with this app&lt;/strong&gt; - This permission is necessary to insert the PDF file into the currently open document, in case you choose the insert option. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;All the other permissions are typical permissions to install and run an add-on inside the Google Docs editor. &lt;/p&gt;

&lt;h2&gt;
  
  
  PDF to Docs Add on Features
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Create a new document from the PDF content&lt;/strong&gt; - Select this option to create a new Google Docs based on the PDF file. This option is the default method and is suitable for bulk conversion of PDF into Google Docs.&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Insert PDF content at the end of the current document&lt;/strong&gt; - Select this option to insert the contents of the PDF file into the currently open Google Docs. However, this option works only when you select a single file for conversion. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open output document in new tab(s)&lt;/strong&gt; - Select this option if you want to open the newly created Google Docs automatically in a new tab. &lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Converting PDF files from Local Drive into a Google Docs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hhmxp222ztnzo1ngnze.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0hhmxp222ztnzo1ngnze.png" alt="Converting a Local PDF file into a Google Docs" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To convert a PDF file from the Local Drive into a Google Docs, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the button &lt;em&gt;Convert Local PDF file(s)&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The file selection window will be opened&lt;/li&gt;
&lt;li&gt;Select one or more PDF file(s) that need to be converted into a Google Docs and Click OK.&lt;/li&gt;
&lt;li&gt;The selected PDF files will be converted into Google Docs and the new Google Docs will be opened in a new tab if you have selected it&lt;/li&gt;
&lt;li&gt;That's it. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Converting PDF files from Google Drive into Google Docs
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6xobe0iimld2a4ytjpt.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fu6xobe0iimld2a4ytjpt.png" alt="Converting PDF file from Google Drive into Google Docs" width="800" height="206"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;To convert a PDF file from the Google Drive into a Google Docs, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Click on the button &lt;em&gt;Convert PDF file(s) from Google Drive&lt;/em&gt;
&lt;/li&gt;
&lt;li&gt;The Google File Picker window will be opened&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4k6r32f4k779b4rcih8.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff4k6r32f4k779b4rcih8.png" alt="Google Drive File Picker for PDF selection" width="598" height="602"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Select one or more PDF file(s) that need to be converted into a Google Docs and Click OK.&lt;/li&gt;
&lt;li&gt;The selected PDF files will be converted into Google Docs and the new Google Docs will be opened in a new tab if you have selected it&lt;/li&gt;
&lt;li&gt;That's it. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Bulk converting PDF files into Google Docs
&lt;/h2&gt;

&lt;p&gt;The add-on supports bulk conversion of the PDF files into Google Docs in both the local file conversion and the Google Drive file conversion option. You can select up to a maximum of 25 files in a single conversion. &lt;/p&gt;

&lt;h2&gt;
  
  
  Privacy and Security
&lt;/h2&gt;

&lt;p&gt;For any file conversion, privacy and security concerns arise for users, particularly when documents may contain confidential data.&lt;/p&gt;

&lt;p&gt;This add-on ensures complete privacy and security. The conversion process takes place entirely within your Google account. Your PDF files are not uploaded to any external servers for conversion. Therefore, you can confidently use this add-on for converting any type of confidential documents.&lt;/p&gt;

&lt;p&gt;This saves time and effort for you.&lt;/p&gt;

&lt;h2&gt;
  
  
  Caveats
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;The maximum number of pages allowed in a PDF file is 75.&lt;/li&gt;
&lt;li&gt;Some formatting may not be preserved, often due to differences in the methods used to create the PDF file. &lt;/li&gt;
&lt;li&gt;The Google Docs editor add-ons can only be used in the Desktop version and doesn't work with the Google Docs iPhone app or the Android app.&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The PDF to Docs editor add-on allows you to convert the PDF file into Google Docs most securely, and privately and keeps the formatting intact.&lt;/p&gt;

</description>
      <category>pdf</category>
      <category>googledocs</category>
      <category>convert</category>
      <category>editing</category>
    </item>
    <item>
      <title>Convert Google Docs to Markdown – With Git Integration &amp; Image Hosting</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Fri, 26 Jan 2024 05:40:49 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/convert-google-docs-to-markdown-with-git-integration-aws-image-hosting-47kf</link>
      <guid>https://forem.com/vikramaruchamy/convert-google-docs-to-markdown-with-git-integration-aws-image-hosting-47kf</guid>
      <description>&lt;p&gt;Google Docs is a free web-based word processor known for its robust and collaborative writing features. But when it comes to publishing the content, Markdown stands out as a good choice.&lt;/p&gt;

&lt;p&gt;While Google Docs automatically detect some Markdown formats and converts them into formatted text, it lacks native support for exporting content back into Markdown format. It also doesn't offer functionalities to validate the accessibility structure of documents, such as ensuring proper heading level hierarchy. &lt;/p&gt;

&lt;p&gt;In this tutorial, you'll discover how to effortlessly &lt;a href="https://www.docstomarkdown.pro/"&gt;convert Google Docs into Markdown&lt;/a&gt; format using the &lt;a href="https://workspace.google.com/marketplace/app/docs_to_markdown_pro/483386994804"&gt;Docs to Markdown Pro Add-on&lt;/a&gt;. We'll also explore its powerful features such as seamless GitHub or GitLab integration and robust image handling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://workspace.google.com/marketplace/app/docs_to_markdown_pro/483386994804?pann=b"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h8_QT9wR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://workspace.google.com/static/img/marketplace/en/gwmBadge.svg%3F" alt="My image" width="417" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Features at a Glance
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;Accessibility checks:&lt;/strong&gt; Checks for missing titles, proper heading levels across and missing image alt text for inclusive and SEO-optimized content&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Generate Markdown output:&lt;/strong&gt; Easily create Markdown output and copy it as text or download it as a file, ready for publishing. If your content includes images, get a publish-ready output as a Zip file containing both Markdown and images&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;One Click to GitHub/GitLab:&lt;/strong&gt; Easily push images and Markdown to GitHub  or GitLab with one click, streamlining your publishing process and preventing potential errors that might occur during manual uploads&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Images optimized for speed:&lt;/strong&gt; Automatically compresses images before uploading them to Git. This makes web pages load faster and saves space in the Git repository&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Static site ready:&lt;/strong&gt; Automatically generates &lt;a href="https://gohugo.io/content-management/front-matter/"&gt;front matter&lt;/a&gt; for Hugo, Jekyll, MkDocs, or Docusaurus when publishing to Git&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Blocks Library:&lt;/strong&gt; Save time and maintain consistency with reusable blocks for inserting boilerplate code and text into your documents&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Cloud image hosting for speed:&lt;/strong&gt; Seamlessly hosts images on the AWS cloud and generates a URL that delivers your images from 600+ AWS CloudFront locations&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;AI-powered caption generation:&lt;/strong&gt; Effortlessly creates descriptive image captions using AI&lt;/p&gt;

&lt;p&gt;Read further to find out how each feature of Docs to Markdown Pro can enhance your content creation journey.&lt;/p&gt;

&lt;h2&gt;
  
  
  Accessibility Check Feature
&lt;/h2&gt;

&lt;p&gt;The add-on ensures accessibility from the start of &lt;a href="https://dev.to/imluka/the-only-markdown-cheatsheet-you-will-ever-need-ccg"&gt;Markdown&lt;/a&gt; creation with automatic &lt;a href="https://www.w3.org/WAI/standards-guidelines/wcag/"&gt;WCAG&lt;/a&gt; checks for title availability, heading levels and image alt text.&lt;/p&gt;

&lt;p&gt;Proper heading levels enhance accessibility by structuring content for screen readers, aiding navigation. Additionally, for SEO, they optimize content hierarchy, improving search engine understanding and user experience. &lt;/p&gt;

&lt;p&gt;The tool verifies the hierarchy of headings used and flags errors if any headings are incorrectly leveled as shown in the following image:&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzeq1nc9d5a739abpngg2.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fzeq1nc9d5a739abpngg2.png" alt="Incorrect heading level warning" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;&lt;a href="https://blog.hubspot.com/marketing/image-alt-text"&gt;Image alt text&lt;/a&gt; is vital for accessibility, offering descriptions for visually impaired users and improving SEO by providing context of images for search engines.&lt;/p&gt;

&lt;p&gt;Additionally, when the internet is slow, the alt text helps readers grasp image content as it loads, making sure they understand what's in the images.&lt;/p&gt;

&lt;p&gt;When converting to Markdown, if an image is missing alt text, the add-on shows the image's position and the section heading where the image is present. This makes it easy to add the alt text to that image.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttdf8eojpmwwzsct3rby.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fttdf8eojpmwwzsct3rby.png" alt="Details about image that is missing alt text shown" width="800" height="443"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These checks make your content inclusive by ensuring everyone can access it and optimize it for search engines, so more people can find it.&lt;/p&gt;

&lt;h3&gt;
  
  
  AI-Powered Image Caption Generation
&lt;/h3&gt;

&lt;p&gt;Optionally, the add-on can automatically generate AI captions for images, saving time for the writers.&lt;/p&gt;

&lt;h2&gt;
  
  
  Download Markdown And Images as Zip
&lt;/h2&gt;

&lt;p&gt;Once your content is converted to &lt;a href="https://en.wikipedia.org/wiki/Markdown"&gt;Markdown&lt;/a&gt;, the add-on creates a Zip file containing both the Markdown file and its images. The Markdown file is updated with the correct image names and paths, making it publish-ready.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetmh55wupethufv54wdz.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fetmh55wupethufv54wdz.png" alt="Output zip file containing Images and Markdown file" width="800" height="511"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;You can upload the images in the appropriate location, upload the Markdown file, and hit publish.&lt;/p&gt;

&lt;h2&gt;
  
  
  Publish to GitHub or GitLab
&lt;/h2&gt;

&lt;p&gt;The add-on seamlessly integrates with both GitHub and GitLab, enabling effortless publishing of your Markdown files onto Git-powered sites. (For example, the &lt;a href="https://pages.github.com/"&gt;GitHub Pages&lt;/a&gt; site built with &lt;a href="https://www.cloudflare.com/en-gb/learning/performance/static-site-generator/"&gt;static site generators&lt;/a&gt;).&lt;/p&gt;

&lt;p&gt;You can push your Google Docs content as Markdown, including images, to GitHub or GitLab with one click. This ensures error-free handling of the image path, image file names and Markdown filename.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ecgu1qanaz6bh294m17.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3ecgu1qanaz6bh294m17.png" alt="Pushing images and Markdown to Git" width="800" height="509"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This also works for updating previously published Git content.&lt;br&gt;
You can make the necessary updates in Google Docs and click push. The updated content will be pushed as Markdown to Git seamlessly.&lt;/p&gt;

&lt;h2&gt;
  
  
  Automatic Image Compression
&lt;/h2&gt;

&lt;p&gt;When users include screenshots or images in Docs, these images might take up more space due to their higher quality or resolution.&lt;/p&gt;

&lt;p&gt;In this case, the tool automatically compresses these images before uploading to GitHub or GitLab, saving space in Git repositories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjie6grt49inot858hwv.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fjjie6grt49inot858hwv.png" alt="Image compression" width="512" height="512"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This optimization significantly enhances the website's overall speed and user experience.&lt;/p&gt;

&lt;h2&gt;
  
  
  Cloud Image Hosting
&lt;/h2&gt;

&lt;p&gt;While converting Docs to Markdown, the tool allows you to upload images to the AWS cloud and generates cloud URLs in your Markdown automatically. &lt;/p&gt;

&lt;p&gt;This eliminates manual image uploads to your server and image path updates in Markdown files, ensuring streamlined workflows, and efficient image storage. &lt;/p&gt;

&lt;p&gt;There are two main advantages of Cloud image hosting:&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Hosting images on the Cloud ensures faster image delivery to users through global edge locations (600+), reducing latency and enhancing accessibility. &lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Uploading images to Cloud storage instead of Git repositories prevents bloating &lt;a href="https://docs.github.com/en/repositories/working-with-files/managing-large-files/about-git-large-file-storage"&gt;Git repositories with binary files&lt;/a&gt;.&lt;/p&gt;&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;a href="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbz1hxrfi6i3ebzfgc2z.png" class="article-body-image-wrapper"&gt;&lt;img src="https://media.dev.to/cdn-cgi/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fvbz1hxrfi6i3ebzfgc2z.png" alt="AWS CloudFront locations" width="800" height="453"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Reusable Blocks
&lt;/h2&gt;

&lt;p&gt;The Blocks library allows you to add boilerplate texts and codes as reusable blocks. You can insert those blocks into your document with a single click.&lt;/p&gt;

&lt;h3&gt;
  
  
  Advantages of using blocks
&lt;/h3&gt;

&lt;p&gt;Using reusable blocks ensures consistent style in all your content, keeping everything looking uniform and cohesive.&lt;/p&gt;

&lt;h2&gt;
  
  
  Streamline Your Process with Google Docs to Markdown Pro
&lt;/h2&gt;

&lt;p&gt;&lt;a href="https://workspace.google.com/marketplace/app/docs_to_markdown_pro/483386994804?pann=b"&gt;&lt;img src="https://res.cloudinary.com/practicaldev/image/fetch/s--h8_QT9wR--/c_limit%2Cf_auto%2Cfl_progressive%2Cq_auto%2Cw_800/https://workspace.google.com/static/img/marketplace/en/gwmBadge.svg%3F" alt="My image" width="417" height="68"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;The Docs to Markdown Pro Add-on makes Google Docs to Markdown conversion seamless. With accessibility checks, smooth GitHub/GitLab integration, and robust image handling, it streamlines your workflow and ensures content accuracy.&lt;/p&gt;

&lt;p&gt;Simplify your workflow and speed up content creation now with the &lt;a href="https://workspace.google.com/marketplace/app/docs_to_markdown_pro/483386994804"&gt;Docs to Markdown Pro Add-on&lt;/a&gt;.&lt;/p&gt;

</description>
      <category>markdown</category>
      <category>github</category>
      <category>gitlab</category>
      <category>documentation</category>
    </item>
    <item>
      <title>How to List Contents of s3 Bucket Using Boto3 Python?</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Tue, 12 Oct 2021 16:37:48 +0000</pubDate>
      <link>https://forem.com/aws-builders/how-to-list-contents-of-s3-bucket-using-boto3-python-47mm</link>
      <guid>https://forem.com/aws-builders/how-to-list-contents-of-s3-bucket-using-boto3-python-47mm</guid>
      <description>&lt;p&gt;S3 is a storage service from AWS. You can store any files such as CSV files or text files. You may need to retrieve the list of files to make some file operations. You'll learn how to list the contents of an S3 bucket in this tutorial. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can list contents of the S3 Bucket by iterating the dictionary returned from &lt;code&gt;my_bucket.objects.all()&lt;/code&gt; method.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If You're in Hurry...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use the below code snippet to list the contents of the S3 Bucket using boto3.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

session = boto3.Session( aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;', aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;')



s3 = session.resource('s3')

my_bucket = s3.Bucket('stackvidhya')

for my_bucket_object in my_bucket.objects.all():
    print(my_bucket_object.key)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    csv_files/
    csv_files/IRIS.csv
    df.csv
    dfdd.csv
    file2_uploaded_by_boto3.txt
    file3_uploaded_by_boto3.txt
    file_uploaded_by_boto3.txt
    filename_by_client_put_object.txt
    text_files/
    text_files/testfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;If You Want to Understand Details, Read on…&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, you'll learn the different methods to list contents from an S3 bucket using boto3. &lt;/p&gt;

&lt;p&gt;You'll use &lt;a href="https://www.askvikram.com/difference-between-boto3-session-resource-client/"&gt;boto3 resource and boto3 client&lt;/a&gt; to list the contents and also use the filtering methods to list specific file types and list files from the specific directory of the S3 Bucket. &lt;/p&gt;

&lt;h2&gt;
  
  
  Installing Boto3
&lt;/h2&gt;

&lt;p&gt;If you've not installed boto3 yet, you can install it by using the below snippet. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%pip install boto3
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Boto3 will be installed successfully. &lt;/p&gt;

&lt;p&gt;Now, you can use it to access AWS resources. &lt;/p&gt;

&lt;h3&gt;
  
  
  Using Boto3 Resource
&lt;/h3&gt;

&lt;p&gt;In this section, you'll use the Boto3 resource to list contents from an s3 bucket. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.askvikram.com/difference-between-boto3-session-resource-client/#boto3_resource"&gt;Boto3 resource&lt;/a&gt; is a high-level object-oriented API that represents the AWS services. Follow the below steps to list the contents from the S3 Bucket using the Boto3 resource. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Boto3 session using &lt;code&gt;boto3.session()&lt;/code&gt; method&lt;/li&gt;
&lt;li&gt;Create the &lt;code&gt;S3&lt;/code&gt; resource &lt;code&gt;session.resource('s3')&lt;/code&gt; snippet&lt;/li&gt;
&lt;li&gt;Create bucket object using the &lt;code&gt;resource.Bucket(&amp;lt;Bucket_name&amp;gt;)&lt;/code&gt; method. &lt;/li&gt;
&lt;li&gt;Invoke the &lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/guide/collections.html#when-collections-make-requests"&gt;objects.all()&lt;/a&gt; method from your bucket and &lt;a href="https://www.stackvidhya.com/iterate-through-dictionary-python/"&gt;iterate the returned collection&lt;/a&gt; to get the each object details and print each object name using thy attribute &lt;code&gt;key&lt;/code&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In addition to listing objects present in the Bucket, it'll also list the sub-directories and the objects inside the sub-directories. &lt;/p&gt;

&lt;p&gt;Use the below snippet to list objects of an S3 bucket. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3
session = boto3.Session(aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;', aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;')

#Then use the session to get the resource
s3 = session.resource('s3')

my_bucket = s3.Bucket('stackvidhya')

for my_bucket_object in my_bucket.objects.all():
    print(my_bucket_object.key)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the list of objects present in the Bucket as below in alphabetical order. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    csv_files/
    csv_files/IRIS.csv
    df.csv
    dfdd.csv
    file2_uploaded_by_boto3.txt
    file3_uploaded_by_boto3.txt
    file_uploaded_by_boto3.txt
    filename_by_client_put_object.txt
    text_files/
    text_files/testfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can use the boto3 resource to List objects in S3 Bucket. &lt;/p&gt;

&lt;h3&gt;
  
  
  Using Boto3 Client
&lt;/h3&gt;

&lt;p&gt;In this section, you'll use the boto3 client to list the contents of an S3 bucket. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.askvikram.com/difference-between-boto3-session-resource-client/#boto3_client"&gt;Boto3 client&lt;/a&gt; is a low-level AWS service class that provides methods to connect and access AWS services similar to the API service. Follow the below steps to list the contents from the S3 Bucket using the boto3 client.  &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create Boto3 session using &lt;code&gt;boto3.session()&lt;/code&gt; method&lt;/li&gt;
&lt;li&gt;Create the boto3 s3 client using the &lt;code&gt;boto3.client('s3')&lt;/code&gt; method.&lt;/li&gt;
&lt;li&gt;Invoke the &lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.list_objects_v2"&gt;list_objects_v2()&lt;/a&gt; method with the bucket name to list all the objects in the S3 bucket. It returns the dictionary object with the object details. &lt;/li&gt;
&lt;li&gt;
&lt;a href="https://www.stackvidhya.com/iterate-through-dictionary-python/"&gt;Iterate the returned dictionary&lt;/a&gt; and display the object names using the &lt;code&gt;obj[key]&lt;/code&gt;. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Similar to the Boto3 resource methods, the Boto3 client also returns the objects in the sub-directories.&lt;/p&gt;

&lt;p&gt;Use the below snippet to list objects of an S3 bucket. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

s3_client = boto3.client('s3', 
                      aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;', 
                      aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;' 
                      )

objects = s3_client.list_objects_v2(Bucket='stackvidhya')

for obj in objects['Contents']:
    print(obj['Key'])
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the objects in the S3 Bucket listed below. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    csv_files/
    csv_files/IRIS.csv
    df.csv
    dfdd.csv
    file2_uploaded_by_boto3.txt
    file3_uploaded_by_boto3.txt
    file_uploaded_by_boto3.txt
    filename_by_client_put_object.txt
    text_files/
    text_files/testfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can list keys in the S3 Bucket using the boto3 client. &lt;/p&gt;

&lt;h2&gt;
  
  
  List Contents of A Specific Directory
&lt;/h2&gt;

&lt;p&gt;In this section, you'll learn how to list a subdirectory's contents that are available in an S3 bucket. This will be useful when there are multiple subdirectories available in your S3 Bucket, and you need to know the contents of a specific directory. &lt;/p&gt;

&lt;p&gt;You can use the &lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/guide/collections.html#filtering"&gt;filter()&lt;/a&gt; method in bucket objects and use the &lt;code&gt;Prefix&lt;/code&gt; attribute to denote the name of the subdirectory. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;Filter()&lt;/code&gt; and &lt;code&gt;Prefix&lt;/code&gt; will &lt;em&gt;also be helpful when you want to select only a specific object&lt;/em&gt; from the S3 Bucket. &lt;/p&gt;

&lt;p&gt;Use the below snippet to select content from a specific directory called &lt;em&gt;csv_files&lt;/em&gt; from the Bucket called &lt;em&gt;stackvidhya&lt;/em&gt;.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

session = boto3.Session( aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;', aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;')

#Then use the session to get the resource
s3 = session.resource('s3')

my_bucket = s3.Bucket('stackvidhya')

for objects in my_bucket.objects.filter(Prefix="csv_files/"):
    print(objects.key)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the list of objects present in the sub-directory &lt;em&gt;csv_files&lt;/em&gt; in alphabetical order. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    csv_files/
    csv_files/IRIS.csv
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can list files in the folder or select objects from a specific directory of an S3 bucket.  &lt;/p&gt;

&lt;h2&gt;
  
  
  List Specific File Types From a Bucket
&lt;/h2&gt;

&lt;p&gt;In this section, you'll learn how to list specific file types from an S3 bucket. &lt;/p&gt;

&lt;p&gt;This may be useful when you want to know all the files of a specific type.  To achieve this, first, you need to &lt;em&gt;select all objects&lt;/em&gt; from the Bucket and check if the object name ends with the particular type. If it ends with your desired type, then you can list the object.  &lt;/p&gt;

&lt;p&gt;It'll list the files of that specific type from the Bucket and including all subdirectories.&lt;/p&gt;

&lt;p&gt;Use the below snippet to list specific file types from an S3 bucket. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

session = boto3.Session( aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;', aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;')

s3 = session.resource('s3')

my_bucket = s3.Bucket('stackvidhya')

for obj in my_bucket.objects.all():
    if obj.key.endswith('txt'):
        print(obj.key)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see all the text files available in the S3 Bucket in alphabetical order. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    file2_uploaded_by_boto3.txt
    file3_uploaded_by_boto3.txt
    file_uploaded_by_boto3.txt
    filename_by_client_put_object.txt
    text_files/testfile.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can list files of a specific type from an S3 bucket. &lt;/p&gt;

&lt;h2&gt;
  
  
  List Contents From A directory Using Regular Expression
&lt;/h2&gt;

&lt;p&gt;Boto3 currently &lt;a href="https://stackoverflow.com/a/52450389"&gt;doesn't support server side filtering&lt;/a&gt; of the objects using regular expressions. &lt;/p&gt;

&lt;p&gt;However, you can get all the files using the &lt;code&gt;objects.all()&lt;/code&gt; method and filter it &lt;a href="https://www.stackvidhya.com/check-if-string-contains-substring-python/#check_if_string_contains_substring_using_regex"&gt;using the regular expression&lt;/a&gt; in the IF condition.&lt;/p&gt;

&lt;p&gt;For example, if you want to list files containing a number in its name, you can use the below snippet. To do an advanced pattern matching search, you can refer to the &lt;a href="https://www.geeksforgeeks.org/python-regex-cheat-sheet/"&gt;regex cheat sheet&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import re 
import boto3

session = boto3.Session(aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;', aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;')

s3 = session.resource('s3')

my_bucket = s3.Bucket('stackvidhya')

substring =  "\d"

for obj in my_bucket.objects.all():
    if re.search(substring,  obj.key):  
        print(obj.key)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the file names with numbers listed below. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;file2_uploaded_by_boto3.txt
file3_uploaded_by_boto3.txt
file_uploaded_by_boto3.txt
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can list contents from a directory of an S3 bucket using the regular expression. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To summarize, you've learned how to list contents for an S3 bucket using boto3 resource and boto3 client. You've also learned to filter the results to list objects from a specific directory and filter results based on a regular expression. &lt;/p&gt;

&lt;p&gt;If you have any questions, comment below.  &lt;/p&gt;

&lt;h2&gt;
  
  
  You May Also Like
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.stackvidhya.com/load-data-from-aws-s3-into-sagemaker/"&gt;How To Load Data From AWS S3 Into Sagemaker (Using Boto3 Or AWSWrangler)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.stackvidhya.com/write-a-file-to-s3-using-boto3/"&gt;How To Write A File Or Data To An S3 Object Using Boto3&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>aws</category>
      <category>python</category>
    </item>
    <item>
      <title>How to Rename Multi index columns in Pandas Dataframe</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Thu, 05 Aug 2021 10:33:04 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/how-to-rename-multi-index-columns-in-pandas-dataframe-170</link>
      <guid>https://forem.com/vikramaruchamy/how-to-rename-multi-index-columns-in-pandas-dataframe-170</guid>
      <description>&lt;p&gt;Pandas dataframe is a powerful two dimensional data structure which allows you to store data in rows and columns format. &lt;/p&gt;

&lt;p&gt;It also supports multi index for columns and rows. &lt;/p&gt;

&lt;p&gt;In this tutorials, you'll learn how to create multi-index pandas data-frame and how to rename the columns of the multi index data-frame. &lt;/p&gt;

&lt;p&gt;If you would like to rename columns of a single index dataframe read, &lt;a href="https://www.stackvidhya.com/rename-columns-in-pandas/"&gt;How to Rename columns of Pandas Dataframe?&lt;/a&gt; &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating Multi-Index Dataframe
&lt;/h2&gt;

&lt;p&gt;To create a multi index dataframe, you need to follow two steps. &lt;/p&gt;

&lt;p&gt;First, create a normal dataframe using &lt;code&gt;pd.DataFrame()&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;Second, set the columns for the dataframe using &lt;code&gt;pd.MultiIndex.from_tuples()&lt;/code&gt;. This allows you to set mutli index for the columns of the dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import pandas as pd

df = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]])

df.columns = pd.MultiIndex.from_tuples((("a", "b"), ("a", "c"), ("a", "d")))

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the below output. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    a
    b   c  d
0   1   2   3
1   4   5   6
2   7   8   9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The multilevel column index dataframe is created. a is the first level column index and b, c, d are the second level column indexes. &lt;/p&gt;

&lt;p&gt;Next, let's see how to rename these  mutli-level columns. &lt;/p&gt;

&lt;h2&gt;
  
  
  Renaming the Multiindex Columns
&lt;/h2&gt;

&lt;p&gt;To rename the multi index columns of the pandas dataframe, you need to use the &lt;a href="http://pandas.pydata.org/pandas-docs/stable/generated/pandas.MultiIndex.set_levels.html"&gt;set_levels()&lt;/a&gt; method. &lt;/p&gt;

&lt;p&gt;Use the below snippet to rename the multi level columns. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df.columns.set_levels(['b1','c1','d1'],level=1,inplace=True)

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;where, &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;['b1','c1','d1']&lt;/code&gt; - New column names of the index&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;level=1&lt;/code&gt; - Level of the columns to be renamed&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;inplace=True&lt;/code&gt; - To perform the rename operation in the same dataframe rather than creating the new dataframe&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Now the second level index of the columns will be renamed to b1, c1, d1 as shown below.&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    a
    b1  c1  d1
0   1   2   3
1   4   5   6
2   7   8   9
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can rename the columns of the multi index dataframe. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;In this short tutorial, you've learnt how to rename the columns of the multi-index pandas data-frame using the &lt;code&gt;set_levels()&lt;/code&gt; method. &lt;/p&gt;

</description>
      <category>python</category>
      <category>pandas</category>
      <category>datascience</category>
    </item>
    <item>
      <title>Pandas Add Row to DataFrame - Definitive Guide</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Sun, 20 Jun 2021 14:34:07 +0000</pubDate>
      <link>https://forem.com/vikramaruchamy/pandas-add-row-to-dataframe-definitive-guide-54mh</link>
      <guid>https://forem.com/vikramaruchamy/pandas-add-row-to-dataframe-definitive-guide-54mh</guid>
      <description>&lt;p&gt;Pandas dataframe is a two dimensional data structure. When using the dataframe for data analysis, you may need to create a new dataframe and selectively add rows to dataframe for creating a dataframe with specific records. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can add rows to pandas dataframe using&lt;/strong&gt; &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;append()&lt;/li&gt;
&lt;li&gt;concat()&lt;/li&gt;
&lt;li&gt;iloc[]&lt;/li&gt;
&lt;li&gt;loc[]&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If You're in Hurry...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use the below code snippet to add row to dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df2 = {'First Name': 'Vikram', 'Last Name': 'Aruchamy', 'Country': 'India'}

df = df.append(df2, ignore_index = True)

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;&lt;strong&gt;If You Want to Understand Details, Read on…&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, you’ll learn the different methods available to add rows to dataframe. You'll also learn how to insert row to an &lt;strong&gt;empty&lt;/strong&gt; dataframe. &lt;/p&gt;

&lt;h2&gt;
  
  
  Creating an Empty Dataframe
&lt;/h2&gt;

&lt;p&gt;First, you need to create an empty dataframe to add rows to it. You can do it by using &lt;code&gt;DataFrame()&lt;/code&gt; method as shown below. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import pandas as pd

df = pd.DataFrame()

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Empty dataframe is created as &lt;code&gt;df&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Add Row to Dataframe
&lt;/h2&gt;

&lt;p&gt;You can add rows to dataframe using four methods. &lt;code&gt;append()&lt;/code&gt;, &lt;code&gt;concat()&lt;/code&gt;, &lt;code&gt;iloc[]&lt;/code&gt; and &lt;code&gt;loc[]&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Let's have a look at it one by one. &lt;/p&gt;

&lt;p&gt;To create a new row, you need to know the columns already available in the dataframe. Read &lt;a href="https://www.stackvidhya.com/pandas-get-column-names/"&gt;How to Get Column Name in Pandas&lt;/a&gt; to know the columns in the dataframe. &lt;/p&gt;

&lt;p&gt;Alternatively, you can &lt;a href="https://www.stackvidhya.com/pretty-print-dataframe/"&gt;print the dataframe&lt;/a&gt; using &lt;code&gt;print(df)&lt;/code&gt; to know the dataframe columns.&lt;/p&gt;

&lt;h3&gt;
  
  
  Using Append
&lt;/h3&gt;

&lt;p&gt;You can use the &lt;a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.append.html"&gt;append()&lt;/a&gt; method to append a row to an existing dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parameters&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;dictionary&lt;/code&gt; or &lt;code&gt;Pandas Series&lt;/code&gt; or  &lt;code&gt;Dataframe&lt;/code&gt; - Object with values for new row&lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ignore_index&lt;/code&gt; = True Means the index from the series or the source dataframe will be ignored. The index available in the target dataframe will be used, instead. False means otherwise. This is &lt;em&gt;optional&lt;/em&gt;. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Returns&lt;/strong&gt;&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;A resultant dataframe which has the rows from the target dataframe and a new row appended. &lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;code&gt;inplace&lt;/code&gt; append is &lt;strong&gt;not&lt;/strong&gt; possible. Hence, do not forget to assign the result to a dataframe object to access it later. &lt;/p&gt;

&lt;p&gt;In the below example, a dictionary is created with values for the columns which already exists in the target dataframe. Then it is appended to the target dataframe using the &lt;code&gt;append()&lt;/code&gt; method.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;dict = {'First Name': 'Vikram', 'Last Name': 'Aruchamy', 'Country': 'India'}

df = df.append(dict, ignore_index = True)

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, you've appended one row to dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can insert a row to dataframe using append. &lt;/p&gt;

&lt;h3&gt;
  
  
  Using Concat
&lt;/h3&gt;

&lt;p&gt;You can append a row to dataframe using &lt;a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.concat.html"&gt;concat()&lt;/a&gt; method. It concatenates two dataframe into one.  &lt;/p&gt;

&lt;p&gt;To add one row, create a dataframe with one row and concatenate it to the existing dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Parameters&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It accepts,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;code&gt;List of dataframes&lt;/code&gt; - List of dataframes that needs to be concatenated &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;ignore_index&lt;/code&gt; - Whether the index of the new dataframe should be ignored when concatenating to the target dataframe &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;axis = 0&lt;/code&gt; - To denote that rows of the dataframe needs to be converted. If you want to concatenate columns, you can use &lt;code&gt;axis=1&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;Returns&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;It returns a &lt;strong&gt;new dataframe object&lt;/strong&gt; which has the rows concatenated from two dataframes. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;inplace&lt;/code&gt; concatenation is &lt;strong&gt;not&lt;/strong&gt; supported. Hence, remember to assign the result to a variable for later use. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df2 = pd.DataFrame({'First Name': ['Kumar'],
                    'Last Name' : ['Ram'],
                    'Country' : ['India']})

df = pd.concat([df, df2], ignore_index = True, axis = 0)

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, you're creating a new dataframe with one rows and it is named as &lt;code&gt;df2&lt;/code&gt;. You're concatenating this to dataframe &lt;code&gt;df&lt;/code&gt;  which already has one dataframe in it. &lt;/p&gt;

&lt;p&gt;Both &lt;code&gt;df&lt;/code&gt; and &lt;code&gt;df2&lt;/code&gt; will be concatenated and you'll see two rows in the resultant dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;Ram&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can use the &lt;code&gt;concat()&lt;/code&gt; method to add rows to the dataframe. &lt;/p&gt;

&lt;h3&gt;
  
  
  Using iLOC
&lt;/h3&gt;

&lt;p&gt;You can use the &lt;a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.iloc.html"&gt;iLoc[]&lt;/a&gt; attribute to add row at a specific position in the dataframe. iloc is an integer based indexing for selecting rows from the dataframe. You can also use it to &lt;strong&gt;assign new rows&lt;/strong&gt; at that position. &lt;/p&gt;

&lt;p&gt;Adding a row at a specific index position will &lt;strong&gt;replace&lt;/strong&gt; the existing row at that position. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; When you're using &lt;code&gt;iLoc&lt;/code&gt; to add a row, the dataframe must already have a row in the position. Atleast an empty row. If a row is not available, you'll see an error &lt;code&gt;IndexError: iloc cannot enlarge its target object&lt;/code&gt;. iLoc will not expand the size of the dataframe automatically. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df.iloc[1] = ['Shivam', 'Pandey', 'India']

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, you're directly adding a row at the index position &lt;code&gt;1&lt;/code&gt;. It replaced the values available in that position with the new values. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can use the &lt;code&gt;iloc[]&lt;/code&gt; to insert a row to the existing dataframe. &lt;/p&gt;

&lt;h3&gt;
  
  
  Using LOC
&lt;/h3&gt;

&lt;p&gt;You can add row to dataframe using the &lt;a href="https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.loc.html"&gt;loc&lt;/a&gt; parameter.  &lt;code&gt;loc[]&lt;/code&gt; is used to access set of rows from the dataframe using the &lt;strong&gt;index label&lt;/strong&gt;.  You can also assign rows with a specific index label using the &lt;code&gt;loc&lt;/code&gt; attribute. &lt;/p&gt;

&lt;p&gt;When using the &lt;code&gt;loc[]&lt;/code&gt; attribute, its &lt;strong&gt;not&lt;/strong&gt; mandatory that a &lt;strong&gt;row already exists&lt;/strong&gt; with specific label. It'll automatically extend the dataframe and add a row with that label, &lt;em&gt;unlike&lt;/em&gt; the &lt;code&gt;iloc[]&lt;/code&gt; method.  &lt;/p&gt;

&lt;p&gt;A full program is demonstrated for this  method because previous methods has the dataframe with the row indexes 1,2,3.. &lt;/p&gt;

&lt;p&gt;To demonstrate loc using the row indexes with names like &lt;code&gt;a&lt;/code&gt;, &lt;code&gt;b&lt;/code&gt;, a new dataframe is created with labels &lt;code&gt;a&lt;/code&gt; and  &lt;code&gt;b&lt;/code&gt;. Then a new row is assigned with the row label &lt;code&gt;c&lt;/code&gt; using the &lt;code&gt;loc[]&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import pandas as pd

# List of Tuples
users = [ ('Shivam', 'Pandey', 'India'),
             ('Kumar', 'Ram' , 'India' ),
              ]
#Create a DataFrame object
df3 = pd.DataFrame(  users, 
                    columns = ['First Name' , 'Last Name', 'Country'],
                    index=['a', 'b']) 


print('Dataframe before adding a new row:\n')
print('---------------------------------------\n')
print(df3)

df3.loc['c'] = ['Vikram', 'Aruchamy', 'India']

print('\nDataframe after adding a new row:\n')
print('---------------------------------------\n')

print(df3)
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;First a dataframe &lt;code&gt;df3&lt;/code&gt; is created with two rows with label &lt;code&gt;a&lt;/code&gt; and &lt;code&gt;b&lt;/code&gt;.  Then a row is inserted with label &lt;code&gt;c&lt;/code&gt;  using the &lt;code&gt;loc[]&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Dataframe before adding a new row:

    ---------------------------------------

      First Name Last Name Country
    a     Shivam    Pandey   India
    b      Kumar       Ram   India

    Dataframe after adding a new row:

    ---------------------------------------

      First Name Last Name Country
    a     Shivam    Pandey   India
    b      Kumar       Ram   India
    c     Vikram  Aruchamy   India
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can use the &lt;code&gt;loc[]&lt;/code&gt; method to add rows to the dataframe. Either it is an empty dataframe or it already has values. &lt;/p&gt;

&lt;p&gt;Next, you'll see the different circumstances where you can use the &lt;code&gt;loc&lt;/code&gt;, &lt;code&gt;iloc&lt;/code&gt;, &lt;code&gt;append()&lt;/code&gt; or &lt;code&gt;concat()&lt;/code&gt; methods to add rows to the dataframe. &lt;/p&gt;

&lt;h2&gt;
  
  
  Pandas Insert Row at Specific Index
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;You can insert row at a specific index in a dataframe using the &lt;code&gt;loc&lt;/code&gt; method.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;This will be useful when you want to insert row between two rows in a dataframe. &lt;/p&gt;

&lt;p&gt;Alternatively, you can also use the &lt;code&gt;iloc[]&lt;/code&gt; method to add rows at a specific index. However, in that case, there must be a row already existing with specific index. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Points to Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;When using &lt;code&gt;loc[]&lt;/code&gt;, If a row is already existing with that index label, it'll be &lt;strong&gt;replaced&lt;/strong&gt; with the new row. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df.loc[2] = ['Shivam', 'Pandey', 'India']

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A row will be added with the index label &lt;code&gt;2&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can append row at a specific index in a dataframe. &lt;/p&gt;

&lt;h2&gt;
  
  
  Pandas Insert Row At top
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;You can insert a row at top in dataframe using the &lt;code&gt;df.loc[-1]&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;After inserting the row with index &lt;code&gt;-1&lt;/code&gt;, you can increment all the indexes by &lt;code&gt;1&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Now indexes of the rows in the dataframe will be 0,1,2,..n-1. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;To use this method, the &lt;strong&gt;index labels of the rows must be integers&lt;/strong&gt;. Otherwise, it won't work. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df.loc[-1] = ['Raj', 'Kumar', 'India']

df.index = df.index + 1

df = df.sort_index()

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Row is first added at position &lt;code&gt;-1&lt;/code&gt; and then all the indexes will be incremented and sorted. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;Raj&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can insert row at top of the dataframe. &lt;/p&gt;

&lt;h2&gt;
  
  
  Pandas Insert Row at Bottom
&lt;/h2&gt;

&lt;p&gt;&lt;strong&gt;You can insert a row at the bottom in dataframe using the &lt;code&gt;df.loc[df.shape[0]]&lt;/code&gt;.&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;&lt;code&gt;df.shape[0]&lt;/code&gt; returns the length of the dataframe. &lt;/p&gt;

&lt;p&gt;For example, if a dataframe already contains 3 rows, already existing rows will have the index 0,1,2,3. Shape[] method will return &lt;code&gt;4&lt;/code&gt;. Hence when you insert using &lt;code&gt;loc[4]&lt;/code&gt;, a row will be added at bottom of the dataframe which is index &lt;code&gt;4&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df.loc[df.shape[0]] = ['Krishna', 'Kumar', 'India']

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A new row will be added at the index position 4 as you see below. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;Raj&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;Krishna&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can append a row at the bottom of the dataframe using &lt;code&gt;loc[]&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Pandas Insert Empty Row
&lt;/h2&gt;

&lt;p&gt;You may need append an empty row to pandas dataframe for adding a row to it later. You can also fill value for specific columns in the dataframe after creating an empty row. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Empty rows can be appended by using the &lt;code&gt;df.loc[df.shape[0]]&lt;/code&gt; and assigning &lt;code&gt;None&lt;/code&gt; values for all the existing columns.&lt;/strong&gt;  &lt;/p&gt;

&lt;p&gt;For example, if your dataframe has three columns, you can create a series with 3 &lt;code&gt;None&lt;/code&gt; values and assign it at the last position of the dataframe. &lt;/p&gt;

&lt;p&gt;That is how you can insert an empty row to the dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df.loc[df.shape[0]] = [None, None, None]

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;An empty row is added at the end of the dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;Raj&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;Krishna&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;5&lt;/th&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can add empty row to the end of the dataframe.&lt;/p&gt;

&lt;h2&gt;
  
  
  Pandas Append Two Dataframe Pandas
&lt;/h2&gt;

&lt;p&gt;You can append a dataframe to another dataframe using the dataframe &lt;code&gt;append()&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;append()&lt;/code&gt; method accepts a dataframe and appends it to the calling dataframe and returns a new dataframe object. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;inplace&lt;/code&gt; append is &lt;strong&gt;not&lt;/strong&gt; possible. hence you need to assign the result a dataframe object if you want to use it later. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;ignore_index&lt;/code&gt; can be used to ignore the index of the dataframe that is assigned to the target dataframe. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;df2 = {'First Name': 'Vikram', 'Last Name': 'Aruchamy', 'Country': 'India'}

df = df.append(df2, ignore_index = True)

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;In the above example, dataframe &lt;code&gt;df2&lt;/code&gt; is appended to &lt;code&gt;df&lt;/code&gt; and assigned it back to the &lt;code&gt;df&lt;/code&gt; object. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;Raj&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;Krishna&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;5&lt;/th&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
      &lt;td&gt;None&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;6&lt;/th&gt;
      &lt;td&gt;India&lt;/td&gt;
      &lt;td&gt;Vikram&lt;/td&gt;
      &lt;td&gt;Aruchamy&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can append two dataframe in pandas using the &lt;code&gt;append()&lt;/code&gt; method. &lt;/p&gt;

&lt;h2&gt;
  
  
  Why You Should Not Add Rows One By One To Dataframe
&lt;/h2&gt;

&lt;p&gt;You may need to create a dataframe and append one row at a time in various scenarios. &lt;/p&gt;

&lt;p&gt;In that case, it is advisable to create a list first to hold all the records and create a dataframe with all the records in one shot using the &lt;code&gt;pd.DataFrame()&lt;/code&gt;method. &lt;/p&gt;

&lt;p&gt;Calling the &lt;code&gt;append()&lt;/code&gt; method for each row is a costlier operation. But adding the rows to the list is not costlier. Hence, you can add to list and create a dataframe using that list. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;data = []

data.append(['Krishna', 'Kumar', 'India'])

data.append(['Ram', 'Kumar', 'India'])

data.append(['Shivam', 'Pandey', 'India'])

df = pd.DataFrame(data, columns=['First Name', 'Last Name', 'Country'])

df
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;For more details about this scenario, refer &lt;a href="https://stackoverflow.com/a/62734983"&gt;stackoverflow&lt;/a&gt; answer. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;

&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;First Name&lt;/th&gt;
      &lt;th&gt;Last Name&lt;/th&gt;
      &lt;th&gt;Country&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;Krishna&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;Ram&lt;/td&gt;
      &lt;td&gt;Kumar&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;Shivam&lt;/td&gt;
      &lt;td&gt;Pandey&lt;/td&gt;
      &lt;td&gt;India&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can create pandas dataframe by appending one row at a time.&lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To summarize, you've learnt how to create empty dataframe in pandas and add rows to it using the &lt;code&gt;append()&lt;/code&gt;, &lt;code&gt;iloc[]&lt;/code&gt;, &lt;code&gt;loc[]&lt;/code&gt;, concatenating two dataframes using &lt;code&gt;concat()&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Also, how these methods can be used to insert row at specific index, add row to the top or bottom of the dataframe, how to add an empty row to the dataframe which can be used at later point. &lt;/p&gt;

&lt;p&gt;In addition to that, you've learnt why you should not create pandas dataframe by appending one row at a time and use a list in such scenarios and create a dataframe using the list. &lt;/p&gt;

&lt;p&gt;If you have any questions, comment below.  &lt;/p&gt;

&lt;h2&gt;
  
  
  You May Also Like
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;
&lt;a href="https://www.stackvidhya.com/add-column-to-dataframe/"&gt;How to Add Column to Dataframe in Pandas&lt;/a&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.stackvidhya.com/rename-column-in-pandas/"&gt;How to Rename Column in Pandas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.stackvidhya.com/drop-column-in-pandas/"&gt;How to Drop Column In Pandas dataframe&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href="https://www.stackvidhya.com/pandas-get-number-of-rows/"&gt;How to Get Number of Rows from Pandas Dataframe&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;


&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>datascience</category>
      <category>programming</category>
    </item>
    <item>
      <title>How to write a file or data to an S3 object using boto3</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Sat, 19 Jun 2021 08:19:59 +0000</pubDate>
      <link>https://forem.com/aws-builders/how-to-write-a-file-or-data-to-an-s3-object-using-boto3-5540</link>
      <guid>https://forem.com/aws-builders/how-to-write-a-file-or-data-to-an-s3-object-using-boto3-5540</guid>
      <description>&lt;p&gt;S3 is an object storage service proved by AWS. You may need to upload data or file to S3 when working with AWS Sagemaker notebook or a normal jupyter notebook in Python. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can Write a file or data into S3 Using Boto3 using&lt;/strong&gt;,&lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Object.put()&lt;/li&gt;
&lt;li&gt;Upload_File()&lt;/li&gt;
&lt;li&gt;Client.putObject()&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;&lt;strong&gt;If You're in Hurry...&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;You can use the below code snippet to write a file to S3.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

#Creating Session With Boto3.
session = boto3.Session(
aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;',
aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;'
)

#Creating S3 Resource From the Session.
s3 = session.resource('s3')

txt_data = b'This is the content of the file uploaded from python boto3 asdfasdf'

object = s3.Object('&amp;lt;bucket_name&amp;gt;', 'file_uploaded_by_boto3.txt')

result = object.put(Body=txt_data)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can upload file to S3 from Jupyter notebook and Python using Boto3. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;If You Want to Understand Details, Read on…&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;In this tutorial, you'll learn how to write a file or a data to S3 using Boto3.&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisites
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Generate the security credentials by clicking Your Profile Name -&amp;gt; My security Credentials -&amp;gt; Access keys (access key ID and secret access key) option. This is necessary to create session to your S3 bucket.&lt;/li&gt;
&lt;li&gt;Understand the &lt;a href="https://www.askvikram.com/difference-between-boto3-session-resource-client/"&gt;difference between boto3 resource and boto3 client&lt;/a&gt;. &lt;code&gt;Object.put()&lt;/code&gt; and the &lt;code&gt;upload_file()&lt;/code&gt; methods are from &lt;code&gt;boto3&lt;/code&gt; resource where as &lt;code&gt;put_object()&lt;/code&gt; is from &lt;code&gt;boto3&lt;/code&gt; client. &lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Using Object.put()
&lt;/h2&gt;

&lt;p&gt;You can use the &lt;code&gt;Object.put()&lt;/code&gt; method available in the &lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Object.put"&gt;S3 object&lt;/a&gt;. &lt;/p&gt;

&lt;p&gt;It allows two ways to write into the S3. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Writing a text content to an S3 object&lt;/li&gt;
&lt;li&gt;Writing contents from the local file to the S3 object &lt;/li&gt;
&lt;/ul&gt;

&lt;h3&gt;
  
  
  Write Text Data To S3 Object
&lt;/h3&gt;

&lt;p&gt;In this section, you'll learn how to write a normal text data to the s3 object. &lt;/p&gt;

&lt;p&gt;Follow the below steps to write a text data to an S3 Object.&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;code&gt;Boto3&lt;/code&gt; session using the security credentials&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;With the session, create a resource object for the &lt;code&gt;S3&lt;/code&gt; service&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;Create an S3 object using the object method. It accepts two parameters. &lt;code&gt;BucketName&lt;/code&gt; and the &lt;code&gt;File_Key&lt;/code&gt;. &lt;code&gt;File_Key&lt;/code&gt; is the name you want to give it for the S3 object. If you would like to create sub-folders inside the bucket, you can prefix the locations in this &lt;code&gt;File_key&lt;/code&gt; variable. For example, &lt;code&gt;/subfolder/file_name.txt&lt;/code&gt;&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Create an text object which holds the text to be updated to the S3 object&lt;/li&gt;
&lt;li&gt;Use the &lt;code&gt;put()&lt;/code&gt; action available in the &lt;code&gt;S3&lt;/code&gt; object and the set the body as the text data. E.g. &lt;code&gt;Body=txt_data&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;
&lt;code&gt;put()&lt;/code&gt; actions returns a &lt;code&gt;JSON&lt;/code&gt; response metadata. This metadata contains the &lt;code&gt;HttpStatusCode&lt;/code&gt; which shows if the file upload is successful or not. If the status code is 200, then the file upload is successful. Else, it is not.&lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Using this method will replace the existing S3 object in the same name. Hence ensure you're using a unique name to this object. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

#Creating Session With Boto3.
session = boto3.Session(
aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;',
aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;'
)

#Creating S3 Resource From the Session.
s3 = session.resource('s3')

object = s3.Object('&amp;lt;bucket_name&amp;gt;', 'file_uploaded_by_boto3.txt')

txt_data = b'This is the content of the file uploaded from python boto3'

result = object.put(Body=txt_data)

res = result.get('ResponseMetadata')

if res.get('HTTPStatusCode') == 200:
    print('File Uploaded Successfully')
else:
    print('File Not Uploaded')

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    File Uploaded Successfully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can update the text data to an S3 object using &lt;code&gt;Boto3&lt;/code&gt;. &lt;/p&gt;

&lt;h3&gt;
  
  
  Reading a File from Local and Updating it to S3
&lt;/h3&gt;

&lt;p&gt;In this section, you'll learn how to read a file from local system and update it to an &lt;code&gt;S3&lt;/code&gt; object. &lt;/p&gt;

&lt;p&gt;It is similar to the steps explained in the previous step except for one step. &lt;/p&gt;

&lt;p&gt;You just need to open a file in the binary mode and send its content to the &lt;code&gt;put()&lt;/code&gt; method using the below snippet. &lt;/p&gt;

&lt;p&gt;Use only forward slash for the filepath. Backslash doesn't work. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Using this method will replace the existing S3 object in the same name. Hence ensure you're using a unique name to this object.&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;result = object.put(Body=open('E:/temp/testfile.txt', 'rb'))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

#Creating Session With Boto3.
session = boto3.Session(
aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;',
aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;'
)

#Creating S3 Resource From the Session.
s3 = session.resource('s3')

object = s3.Object('&amp;lt;bucket_name&amp;gt;', 'file3_uploaded_by_boto3.txt')

result = object.put(Body=open('E:/temp/testfile.txt', 'rb'))

res = result.get('ResponseMetadata')

if res.get('HTTPStatusCode') == 200:
    print('File Uploaded Successfully')
else:
    print('File Not Uploaded')

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You can check if file is successfully uploaded or not using the &lt;code&gt;HTTPStatusCode&lt;/code&gt; available in the &lt;code&gt;responsemetadata&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    File Uploaded Successfully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can write the data from the text file to an S3 object using &lt;code&gt;Boto3&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Using Upload_File()
&lt;/h2&gt;

&lt;p&gt;In this section, you'll learn how to use the &lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/guide/s3-uploading-files.html"&gt;upload_file()&lt;/a&gt; method to upload a file to an S3 bucket. It is a boto3 resource. &lt;/p&gt;

&lt;p&gt;Follow the below steps to use the &lt;code&gt;upload_file()&lt;/code&gt; action to upload file to S3 bucket. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a &lt;code&gt;boto3&lt;/code&gt; session&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create an object for &lt;code&gt;S3&lt;/code&gt; object&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Access the bucket in the &lt;code&gt;S3&lt;/code&gt; resource using the &lt;code&gt;s3.Bucket()&lt;/code&gt; method and invoke the &lt;code&gt;upload_file()&lt;/code&gt; method to upload the files&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;code&gt;upload_file()&lt;/code&gt; method accepts two parameters.  &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;- `File_Path` - Path of the file from the local system that needs to be uploaded. Use only forward slash when you mention the path name
- `Object_name` - Name for the object that will be created by uploading this file
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;Unlike the other methods, the &lt;code&gt;upload_file()&lt;/code&gt; method doesn't return an meta object to check the result. You can use the other methods to check if an object is available in the bucket. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Using this method will replace the existing S3 object in the same name. Hence ensure you're using a unique name to this object. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

#Creating Session With Boto3.
session = boto3.Session(
aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;',
aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;'
)

#Creating S3 Resource From the Session.
s3 = session.resource('s3')

result = s3.Bucket('&amp;lt;bucket_name&amp;gt;').upload_file('E:/temp/testfile.txt','file2_uploaded_by_boto3.txt')

print(result)

&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;File is &lt;strong&gt;updated successfully&lt;/strong&gt;. But you'll only see the status as &lt;code&gt;None&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    None
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can use the upload_file() method to upload file to the S3 buckets. &lt;/p&gt;

&lt;h2&gt;
  
  
  Using Client.putObject()
&lt;/h2&gt;

&lt;p&gt;In this section, you'll learn how to use the &lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/reference/services/s3.html#S3.Client.put_object"&gt;put_object&lt;/a&gt; method from the boto3 client. &lt;/p&gt;

&lt;p&gt;Follow the below steps to use the &lt;code&gt;client.put_object()&lt;/code&gt; method to upload a file as an &lt;code&gt;S3&lt;/code&gt; object. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Create a boto3 session using your AWS security credentials&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Create a resource object for &lt;code&gt;S3&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Get the client from the S3 resource using &lt;code&gt;s3.meta.client&lt;/code&gt;&lt;/p&gt;&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Invoke the &lt;code&gt;put_object()&lt;/code&gt; method from the client. It accepts two parameters. &lt;/p&gt;&lt;/li&gt;
&lt;/ol&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt; - `body`  - To pass the textual content for the S3 object. You can pass the text directly. Or you can use the file object by opening the file using `open('E:/temp/testfile.txt', 'rb')`
 - `Name` - Name for the new object that will be created. 
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;

&lt;p&gt;&lt;code&gt;put_object()&lt;/code&gt; also returns a &lt;code&gt;ResponseMetaData&lt;/code&gt; which will let you know the status code to denote if the upload is successful or not. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

#Creating Session With Boto3.
session = boto3.Session(
aws_access_key_id='&amp;lt;your_access_key_id&amp;gt;',
aws_secret_access_key='&amp;lt;your_secret_access_key&amp;gt;'
)

#Creating S3 Resource From the Session.
s3 = session.resource('s3')

result = s3.meta.client.put_object(Body='Text Contents', Bucket='&amp;lt;bucket_name&amp;gt;', Key='filename_by_client_put_object.txt')

res = result.get('ResponseMetadata')

if res.get('HTTPStatusCode') == 200:
    print('File Uploaded Succesfully')
else:
    print('File Not Uploaded')
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;A new S3 object will be created and the contents of the file will be uploaded. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    File Uploaded Succesfully
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can use the put_object() method available in &lt;code&gt;boto3&lt;/code&gt; S3 client to upload files to the S3 bucket. &lt;/p&gt;

&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To summarize, you've learnt what is &lt;code&gt;boto3&lt;/code&gt; client and &lt;code&gt;boto3&lt;/code&gt; resource in the prerequisites and also learnt the different methods available in the &lt;code&gt;boto3&lt;/code&gt; resource and &lt;code&gt;boto3&lt;/code&gt; client to upload file or data to the &lt;code&gt;S3&lt;/code&gt; buckets. &lt;/p&gt;

&lt;h2&gt;
  
  
  You May Also Like
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;&lt;a href="https://www.stackvidhya.com/load-data-from-aws-s3-into-sagemaker/"&gt;How To Load Data From AWS S3 Into Sagemaker (Using Boto3 Or AWSWrangler)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;

</description>
      <category>python</category>
      <category>aws</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>How To Load Data From AWS S3 into Sagemaker (Using Boto3 or AWSWrangler)</title>
      <dc:creator>Vikram Aruchamy</dc:creator>
      <pubDate>Fri, 11 Jun 2021 16:39:34 +0000</pubDate>
      <link>https://forem.com/aws-builders/how-to-load-data-from-aws-s3-into-sagemaker-using-boto3-or-awswrangler-9l6</link>
      <guid>https://forem.com/aws-builders/how-to-load-data-from-aws-s3-into-sagemaker-using-boto3-or-awswrangler-9l6</guid>
      <description>&lt;h1&gt;
  
  
  How To Load Data From AWS S3 into Sagemaker (Using Boto3 or AWSWrangler)
&lt;/h1&gt;

&lt;p&gt;S3 is a storage service from AWS. You can store any type of files such as &lt;code&gt;csv&lt;/code&gt; files or text files. SageMaker provides the compute capacity to build, train and deploy ML models. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;You can load data from AWS S3 into AWS SageMaker using Boto3 or AWSWranger.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;In this tutorial, you'll learn how to load data from AWS S3 into SageMaker jupyter notebook. &lt;/p&gt;

&lt;p&gt;This will only access the data from &lt;code&gt;S3&lt;/code&gt;. The files will &lt;strong&gt;not be downloaded&lt;/strong&gt; to the SageMaker Instance itself. If you want to download the file to the SageMaker policy, read &lt;a href="https://www.askvikram.com/download-files-from-s3-using-boto3/"&gt;How to Download File From S3 Using Boto3 [Python]?&lt;/a&gt;&lt;/p&gt;

&lt;h2&gt;
  
  
  Prerequisite
&lt;/h2&gt;

&lt;ul&gt;
&lt;li&gt;Sagemaker instance MUST have read access to your S3 buckets. Assign the role  &lt;code&gt;AmazonSageMakerServiceCatalogProductsUseRole&lt;/code&gt; while creating SageMaker instance. Refer &lt;a href="https://docs.aws.amazon.com/sagemaker/latest/dg/sagemaker-roles.html"&gt;this link&lt;/a&gt; for more details about SageMaker Roles &lt;/li&gt;
&lt;li&gt;Install pandas dataframe using &lt;code&gt;pip install pandas&lt;/code&gt; to read csv file as dataframe. In most cases it is available as default package&lt;/li&gt;
&lt;/ul&gt;

&lt;h2&gt;
  
  
  Loading CSV file from S3 Bucket Using URI
&lt;/h2&gt;

&lt;p&gt;In this section, you'll load the CSV file from the S3 bucket using the S3 URI. &lt;/p&gt;

&lt;p&gt;There are two options to generate the S3 URI &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Copying object URL from the AWS &lt;code&gt;S3&lt;/code&gt; Console. &lt;/li&gt;
&lt;li&gt;Generate the URI manually by using the String format option. (This is demonstrated in the below example)&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;Follow the below steps to load the CSV file from S3 bucket. &lt;/p&gt;

&lt;ul&gt;
&lt;li&gt;Import &lt;code&gt;pandas&lt;/code&gt; package to read &lt;code&gt;csv&lt;/code&gt; file as a dataframe&lt;/li&gt;
&lt;li&gt;Create a variable &lt;code&gt;bucket&lt;/code&gt; to hold the bucket name. &lt;/li&gt;
&lt;li&gt;Create the &lt;code&gt;file_key&lt;/code&gt; to hold the name of the s3 object. You can prefix the subfolder names, if your object is under any subfolder of the bucket. &lt;/li&gt;
&lt;li&gt;Concatenate the bucket name and the object name with the prefix &lt;code&gt;s3://&lt;/code&gt; to generate the URI of the S3 object&lt;/li&gt;
&lt;li&gt;Use the generated URI in the &lt;code&gt;read_csv()&lt;/code&gt; method of the pandas package and store it in the dataframe object called &lt;code&gt;df&lt;/code&gt;
&lt;/li&gt;
&lt;/ul&gt;

&lt;p&gt;In the example, the object is available in the bucket &lt;code&gt;stackvidhya&lt;/code&gt; and sub-folder called &lt;code&gt;csv_files&lt;/code&gt;. Hence you'll use the bucket name as &lt;code&gt;stackvidhya&lt;/code&gt; and the file_key as &lt;code&gt;csv_files/IRIS.csv&lt;/code&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import pandas as pd

bucket='stackvidhya'

file_key = 'csv_files/IRIS.csv'

s3uri = 's3://{}/{}'.format(bucket, file_key)

df = pd.read_csv(s3uri)

df.head()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The csv file will be read from the &lt;code&gt;S3&lt;/code&gt; location as a pandas dataframe. &lt;/p&gt;

&lt;p&gt;You can &lt;a href="https://www.stackvidhya.com/pretty-print-dataframe/"&gt;print the dataframe&lt;/a&gt; using &lt;code&gt;df.head()&lt;/code&gt; which will print the first five rows of the dataframe as shown below. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe will look like&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}

.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;sepal_length&lt;/th&gt;
      &lt;th&gt;sepal_width&lt;/th&gt;
      &lt;th&gt;petal_length&lt;/th&gt;
      &lt;th&gt;petal_width&lt;/th&gt;
      &lt;th&gt;species&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;5.1&lt;/td&gt;
      &lt;td&gt;3.5&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;4.9&lt;/td&gt;
      &lt;td&gt;3.0&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;4.7&lt;/td&gt;
      &lt;td&gt;3.2&lt;/td&gt;
      &lt;td&gt;1.3&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;4.6&lt;/td&gt;
      &lt;td&gt;3.1&lt;/td&gt;
      &lt;td&gt;1.5&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;5.0&lt;/td&gt;
      &lt;td&gt;3.6&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can load s3 data into sagemaker jupyter notebook without using any external libraries. &lt;/p&gt;

&lt;p&gt;In this method, the file is also not downloaded into notebook directly. &lt;/p&gt;

&lt;p&gt;Next, you'll learn about using the external libraries to load the data. &lt;/p&gt;

&lt;h2&gt;
  
  
  Loading CSV file from S3 Bucket using Boto3
&lt;/h2&gt;

&lt;p&gt;In this section, you'll use the Boto3. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://boto3.amazonaws.com/v1/documentation/api/latest/index.html"&gt;Boto3&lt;/a&gt; is an AWS SDK for creating, managing and access AWS services such as S3 and EC2 instances. &lt;/p&gt;

&lt;p&gt;Follow the below steps to access the file from S3&lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;Import &lt;code&gt;pandas&lt;/code&gt; package to read &lt;code&gt;csv&lt;/code&gt; file as a dataframe&lt;/li&gt;
&lt;li&gt;Create a variable &lt;code&gt;bucket&lt;/code&gt; to hold the bucket name. &lt;/li&gt;
&lt;li&gt;Create the &lt;code&gt;file_key&lt;/code&gt; to hold the name of the s3 object. You can prefix the subfolder names, if your object is under any subfolder of the bucket. &lt;/li&gt;
&lt;li&gt;Create an &lt;code&gt;s3&lt;/code&gt; client using the &lt;code&gt;boto3.client('s3')&lt;/code&gt;. &lt;a href="https://www.askvikram.com/difference-between-boto3-session-resource-client/"&gt;Boto3 Client&lt;/a&gt; is a low level representation of the AWS services. &lt;/li&gt;
&lt;li&gt;Get s3 object using the &lt;code&gt;s3_client.get_object()&lt;/code&gt; method. Pass the bucket name and the file key you can created in the previous step. It'll return the s3 data as response. (Stored as &lt;code&gt;obj&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;Read the  the object body using &lt;code&gt;obj['Body'].read()&lt;/code&gt;. It'll return the bytes. Convert these bytes to String using &lt;code&gt;io.BytesIO()&lt;/code&gt;. &lt;/li&gt;
&lt;li&gt;This string can be passed to &lt;code&gt;read_csv()&lt;/code&gt; available in pandas. Then you'll get a dataframe. &lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import pandas as pd
import boto3
import io

bucket='stackvidhya'

file_key = 'csv_files/IRIS.csv'

s3_client = boto3.client('s3')

obj = s3_client.get_object(Bucket=bucket, Key=file_key)

df = pd.read_csv(io.BytesIO(obj['Body'].read()))

df.head()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;The dataframe can be printed using the &lt;code&gt;df.head()&lt;/code&gt; method. It'll print the first five rows of the dataframe as shown below. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}

.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;sepal_length&lt;/th&gt;
      &lt;th&gt;sepal_width&lt;/th&gt;
      &lt;th&gt;petal_length&lt;/th&gt;
      &lt;th&gt;petal_width&lt;/th&gt;
      &lt;th&gt;species&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;5.1&lt;/td&gt;
      &lt;td&gt;3.5&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;4.9&lt;/td&gt;
      &lt;td&gt;3.0&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;4.7&lt;/td&gt;
      &lt;td&gt;3.2&lt;/td&gt;
      &lt;td&gt;1.3&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;4.6&lt;/td&gt;
      &lt;td&gt;3.1&lt;/td&gt;
      &lt;td&gt;1.5&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;5.0&lt;/td&gt;
      &lt;td&gt;3.6&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
   
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;You can also use the same steps to access files from &lt;code&gt;S3&lt;/code&gt; in jupyter notebook*&lt;em&gt;(outside of sagemaker)&lt;/em&gt;*. &lt;/p&gt;

&lt;p&gt;Just pass the AWS API security credentials while creating boto3 client as shown below. Refer the tutorial &lt;a href="https://www.askvikram.com/install-aws-cli-on-ubuntu-and-configure-aws-cli/#step_2_-_creating_access_keys_in_aws_console"&gt;How to create AWS security credentials&lt;/a&gt; to create credentials. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;s3_client = boto3.client('s3', aws_access_key_id='AWS_SERVER_PUBLIC_KEY', aws_secret_access_key='AWS_SERVER_SECRET_KEY', region_name=REGION_NAME )
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;This is how you can read csv file into sagemaker using boto3. &lt;/p&gt;

&lt;p&gt;Next, you'll learn about the package &lt;code&gt;awswrangler&lt;/code&gt;. &lt;/p&gt;

&lt;h2&gt;
  
  
  Loading CSV File into Sagemaker using AWS Wrangler
&lt;/h2&gt;

&lt;p&gt;In this section, you'll learn how to access data from AWS s3 using AWS Wrangler. &lt;/p&gt;

&lt;p&gt;&lt;a href="https://aws-data-wrangler.readthedocs.io/en/stable/what.html"&gt;AWS Wrangler&lt;/a&gt; is an aws professional service open source python library that extends the functionalities of the pandas library to AWS by connecting dataframe and other data related services. &lt;/p&gt;

&lt;p&gt;This package is not installed by default. &lt;/p&gt;

&lt;h3&gt;
  
  
  Installing AWSWrangler
&lt;/h3&gt;

&lt;p&gt;Install the &lt;code&gt;awswrangler&lt;/code&gt; by using the pip install command. &lt;/p&gt;

&lt;p&gt;&lt;code&gt;%&lt;/code&gt; needs to be prefixed to &lt;code&gt;pip&lt;/code&gt; command so the installation directly works from the jupyter notebook.  &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;%pip install awswrangler
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;You'll see the below messages and the AWS Data wrangler will be installed. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;    Collecting awswrangler
      Downloading awswrangler-2.8.0-py3-none-any.whl (179 kB)

    Installing collected packages: scramp, redshift-connector, pymysql, pg8000, awswrangler
    Successfully installed awswrangler-2.8.0 pg8000-1.19.5 pymysql-1.0.2 redshift-connector-2.0.881 scramp-1.4.0
    Note: you may need to restart the kernel to use updated packages.
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;Now, restart the kernel using the &lt;em&gt;Kernel -&amp;gt; Restart&lt;/em&gt; option for activating the package. &lt;/p&gt;

&lt;p&gt;Once the kernel is restarted, you can use the awswrangler to access data from aws s3 in your sagemaker notebook. &lt;/p&gt;

&lt;p&gt;Follow the below steps to access the file from &lt;code&gt;S3&lt;/code&gt; using AWSWrangler. &lt;/p&gt;

&lt;ol&gt;
&lt;li&gt;import &lt;code&gt;pandas&lt;/code&gt; package to read &lt;code&gt;csv&lt;/code&gt; file as a dataframe&lt;/li&gt;
&lt;li&gt;import &lt;code&gt;awswrangler&lt;/code&gt; as &lt;code&gt;wr&lt;/code&gt;
&lt;/li&gt;
&lt;li&gt;Create a variable &lt;code&gt;bucket&lt;/code&gt; to hold the bucket name. &lt;/li&gt;
&lt;li&gt;Create the &lt;code&gt;file_key&lt;/code&gt; to hold the name of the &lt;code&gt;S3&lt;/code&gt; object. You can prefix the subfolder names, if your object is under any subfolder of the bucket. &lt;/li&gt;
&lt;li&gt;Concatenate bucket name and the file key to generate the &lt;code&gt;s3uri&lt;/code&gt;.

&lt;ol&gt;
&lt;li&gt;Use the &lt;code&gt;read_csv()&lt;/code&gt; method in &lt;code&gt;awswrangler&lt;/code&gt; to fetch the &lt;code&gt;S3&lt;/code&gt; data using the line &lt;code&gt;wr.s3.read_csv(path=s3uri)&lt;/code&gt;. &lt;/li&gt;
&lt;/ol&gt;


&lt;/li&gt;
&lt;/ol&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import awswrangler as wr

import pandas as pd

bucket='stackvidhya'

file_key = 'csv_files/IRIS.csv'

s3uri = 's3://{}/{}'.format(bucket, file_key)

df = wr.s3.read_csv(path=s3uri)

df.head()
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;code&gt;readcsv()&lt;/code&gt; method will return a pandas dataframe out of csv data. You can &lt;a href="https://www.stackvidhya.com/pretty-print-dataframe/"&gt;print the dataframe&lt;/a&gt; using df.head() which will return the first five rows of the dataframe as shown below. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Dataframe Will Look Like&lt;/strong&gt;&lt;/p&gt;
&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;.dataframe tbody tr th:only-of-type {
    vertical-align: middle;
}

.dataframe tbody tr th {
    vertical-align: top;
}

.dataframe thead th {
    text-align: right;
}
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;
&lt;div class="table-wrapper-paragraph"&gt;&lt;table&gt;
  &lt;thead&gt;
    &lt;tr&gt;
      &lt;th&gt;&lt;/th&gt;
      &lt;th&gt;sepal_length&lt;/th&gt;
      &lt;th&gt;sepal_width&lt;/th&gt;
      &lt;th&gt;petal_length&lt;/th&gt;
      &lt;th&gt;petal_width&lt;/th&gt;
      &lt;th&gt;species&lt;/th&gt;
    &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
    &lt;tr&gt;
      &lt;th&gt;0&lt;/th&gt;
      &lt;td&gt;5.1&lt;/td&gt;
      &lt;td&gt;3.5&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;1&lt;/th&gt;
      &lt;td&gt;4.9&lt;/td&gt;
      &lt;td&gt;3.0&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;2&lt;/th&gt;
      &lt;td&gt;4.7&lt;/td&gt;
      &lt;td&gt;3.2&lt;/td&gt;
      &lt;td&gt;1.3&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;3&lt;/th&gt;
      &lt;td&gt;4.6&lt;/td&gt;
      &lt;td&gt;3.1&lt;/td&gt;
      &lt;td&gt;1.5&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
    &lt;tr&gt;
      &lt;th&gt;4&lt;/th&gt;
      &lt;td&gt;5.0&lt;/td&gt;
      &lt;td&gt;3.6&lt;/td&gt;
      &lt;td&gt;1.4&lt;/td&gt;
      &lt;td&gt;0.2&lt;/td&gt;
      &lt;td&gt;Iris-setosa&lt;/td&gt;
    &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;&lt;/div&gt;

&lt;p&gt;This is how you can load the csv file from &lt;code&gt;S3&lt;/code&gt; using &lt;code&gt;awswrangler&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;Next, you'll see how to read a normal text file. &lt;/p&gt;

&lt;h2&gt;
  
  
  Read Text File from S3
&lt;/h2&gt;

&lt;p&gt;You've seen how to read the &lt;code&gt;csv file&lt;/code&gt; from &lt;code&gt;S3&lt;/code&gt; in a sagemaker notebook. &lt;/p&gt;

&lt;p&gt;In this section, you'll see &lt;strong&gt;how to access a normal text file from &lt;code&gt;S3&lt;/code&gt;&lt;/strong&gt; and read its content.&lt;/p&gt;

&lt;p&gt;As seen before, you can create an &lt;code&gt;S3&lt;/code&gt; client and get the object from &lt;code&gt;S3&lt;/code&gt; client using the bucket name and the object key. &lt;/p&gt;

&lt;p&gt;Then you can read the object body using the &lt;code&gt;read()&lt;/code&gt; method. &lt;/p&gt;

&lt;p&gt;The read method will &lt;strong&gt;return the file contents as bytes.&lt;/strong&gt; &lt;/p&gt;

&lt;p&gt;You can &lt;strong&gt;decode the bytes into string&lt;/strong&gt; using the &lt;code&gt;contents.decode('utf-8')&lt;/code&gt;. &lt;code&gt;UTF-8&lt;/code&gt; is the most use charset encoding. &lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Snippet&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;import boto3

bucket='stackvidhya'

data_key = 'text_files/testfile.txt'

s3_client = boto3.client('s3')

obj = s3_client.get_object(Bucket=bucket, Key=data_key)

contents = obj['Body'].read()

print(contents.decode("utf-8"))
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;p&gt;&lt;strong&gt;Output&lt;/strong&gt;&lt;br&gt;
&lt;/p&gt;

&lt;div class="highlight js-code-highlight"&gt;
&lt;pre class="highlight plaintext"&gt;&lt;code&gt;This is a test file to demonstrate the file access functionlity from AWS S3 into sagemaker notebook
&lt;/code&gt;&lt;/pre&gt;

&lt;/div&gt;



&lt;h2&gt;
  
  
  Conclusion
&lt;/h2&gt;

&lt;p&gt;To summarize, you've learnt how to access or load the file from aws &lt;code&gt;S3&lt;/code&gt; into sagemaker jupyter notebook using the packages &lt;code&gt;boto3&lt;/code&gt; and &lt;code&gt;awswrangler&lt;/code&gt;. &lt;/p&gt;

&lt;p&gt;You've also learnt how to access the file without using any additional packages. &lt;/p&gt;

&lt;p&gt;If you've any questions, feel free to comment below. &lt;/p&gt;

</description>
      <category>aws</category>
      <category>python</category>
      <category>machinelearning</category>
    </item>
  </channel>
</rss>
