Unable to get CSV Row count in Powershell












2














I have a csv file that's structured like this:



Text,Url
Learning Haskell,https://wiki.haskell.org/Learning_Haskell


I'm attempting to get the row count before I loop over the csv file, because I don't want to start a loop on empty results.



From researching (1,2), it would seem that Import-csv has a .Count property, but for some reason I'm unable to access that property. I'm using Powershell v5.



Code:



[string]$markdownlink = "markdownlinks.csv"
[string]$processedLinks = "completedlinks.txt"

$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","

# Returns 0
[int]$count=$markdownlinkstoProcess.Count
Write-output $count









share|improve this question






















  • You could do $markdownlinkstoProcess.GetLength(0) or @($markdownlinkstoProcess.GetEnumerator()).Count to get the number of rows in the csv. $markdownlinkstoProcess.GetUpperBound(0) + 1 should also do the trick.
    – Theo
    Nov 10 at 14:28


















2














I have a csv file that's structured like this:



Text,Url
Learning Haskell,https://wiki.haskell.org/Learning_Haskell


I'm attempting to get the row count before I loop over the csv file, because I don't want to start a loop on empty results.



From researching (1,2), it would seem that Import-csv has a .Count property, but for some reason I'm unable to access that property. I'm using Powershell v5.



Code:



[string]$markdownlink = "markdownlinks.csv"
[string]$processedLinks = "completedlinks.txt"

$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","

# Returns 0
[int]$count=$markdownlinkstoProcess.Count
Write-output $count









share|improve this question






















  • You could do $markdownlinkstoProcess.GetLength(0) or @($markdownlinkstoProcess.GetEnumerator()).Count to get the number of rows in the csv. $markdownlinkstoProcess.GetUpperBound(0) + 1 should also do the trick.
    – Theo
    Nov 10 at 14:28
















2












2








2







I have a csv file that's structured like this:



Text,Url
Learning Haskell,https://wiki.haskell.org/Learning_Haskell


I'm attempting to get the row count before I loop over the csv file, because I don't want to start a loop on empty results.



From researching (1,2), it would seem that Import-csv has a .Count property, but for some reason I'm unable to access that property. I'm using Powershell v5.



Code:



[string]$markdownlink = "markdownlinks.csv"
[string]$processedLinks = "completedlinks.txt"

$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","

# Returns 0
[int]$count=$markdownlinkstoProcess.Count
Write-output $count









share|improve this question













I have a csv file that's structured like this:



Text,Url
Learning Haskell,https://wiki.haskell.org/Learning_Haskell


I'm attempting to get the row count before I loop over the csv file, because I don't want to start a loop on empty results.



From researching (1,2), it would seem that Import-csv has a .Count property, but for some reason I'm unable to access that property. I'm using Powershell v5.



Code:



[string]$markdownlink = "markdownlinks.csv"
[string]$processedLinks = "completedlinks.txt"

$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","

# Returns 0
[int]$count=$markdownlinkstoProcess.Count
Write-output $count






powershell csv count






share|improve this question













share|improve this question











share|improve this question




share|improve this question










asked Nov 10 at 14:18









EmilyScott

252




252












  • You could do $markdownlinkstoProcess.GetLength(0) or @($markdownlinkstoProcess.GetEnumerator()).Count to get the number of rows in the csv. $markdownlinkstoProcess.GetUpperBound(0) + 1 should also do the trick.
    – Theo
    Nov 10 at 14:28




















  • You could do $markdownlinkstoProcess.GetLength(0) or @($markdownlinkstoProcess.GetEnumerator()).Count to get the number of rows in the csv. $markdownlinkstoProcess.GetUpperBound(0) + 1 should also do the trick.
    – Theo
    Nov 10 at 14:28


















You could do $markdownlinkstoProcess.GetLength(0) or @($markdownlinkstoProcess.GetEnumerator()).Count to get the number of rows in the csv. $markdownlinkstoProcess.GetUpperBound(0) + 1 should also do the trick.
– Theo
Nov 10 at 14:28






You could do $markdownlinkstoProcess.GetLength(0) or @($markdownlinkstoProcess.GetEnumerator()).Count to get the number of rows in the csv. $markdownlinkstoProcess.GetUpperBound(0) + 1 should also do the trick.
– Theo
Nov 10 at 14:28














2 Answers
2






active

oldest

votes


















1














when you have ONE data row in a CSV file, the import produces a single object. that has a known bug in that it will report zero as the .Count of the $Var. this appears to happen with anything that returns a single PSCustomObject - but i aint sure of that.



the solution is to force it to be an array. you can cast it as [array] or simply wrap it in @(). using your code for an example ...



$markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
$markdownlinkstoProcess.GetType()
# result = PSCustomObject
$markdownlinkstoProcess.Count
# result = 0

$markdownlinkstoProcess = @(Import-Csv $markdownlink -Delimiter ",")
$markdownlinkstoProcess.GetType()
# result = Object
$markdownlinkstoProcess.Count
# result = 1





share|improve this answer





























    0














    You still can use Measure-Object CmdLet (That I personaly Alias with count).



    ((Import-Csv $markdownlink -Delimiter ",") | Measure-Object).count





    share|improve this answer





















      Your Answer






      StackExchange.ifUsing("editor", function () {
      StackExchange.using("externalEditor", function () {
      StackExchange.using("snippets", function () {
      StackExchange.snippets.init();
      });
      });
      }, "code-snippets");

      StackExchange.ready(function() {
      var channelOptions = {
      tags: "".split(" "),
      id: "1"
      };
      initTagRenderer("".split(" "), "".split(" "), channelOptions);

      StackExchange.using("externalEditor", function() {
      // Have to fire editor after snippets, if snippets enabled
      if (StackExchange.settings.snippets.snippetsEnabled) {
      StackExchange.using("snippets", function() {
      createEditor();
      });
      }
      else {
      createEditor();
      }
      });

      function createEditor() {
      StackExchange.prepareEditor({
      heartbeatType: 'answer',
      autoActivateHeartbeat: false,
      convertImagesToLinks: true,
      noModals: true,
      showLowRepImageUploadWarning: true,
      reputationToPostImages: 10,
      bindNavPrevention: true,
      postfix: "",
      imageUploader: {
      brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
      contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
      allowUrls: true
      },
      onDemand: true,
      discardSelector: ".discard-answer"
      ,immediatelyShowMarkdownHelp:true
      });


      }
      });














      draft saved

      draft discarded


















      StackExchange.ready(
      function () {
      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239849%2funable-to-get-csv-row-count-in-powershell%23new-answer', 'question_page');
      }
      );

      Post as a guest















      Required, but never shown

























      2 Answers
      2






      active

      oldest

      votes








      2 Answers
      2






      active

      oldest

      votes









      active

      oldest

      votes






      active

      oldest

      votes









      1














      when you have ONE data row in a CSV file, the import produces a single object. that has a known bug in that it will report zero as the .Count of the $Var. this appears to happen with anything that returns a single PSCustomObject - but i aint sure of that.



      the solution is to force it to be an array. you can cast it as [array] or simply wrap it in @(). using your code for an example ...



      $markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
      $markdownlinkstoProcess.GetType()
      # result = PSCustomObject
      $markdownlinkstoProcess.Count
      # result = 0

      $markdownlinkstoProcess = @(Import-Csv $markdownlink -Delimiter ",")
      $markdownlinkstoProcess.GetType()
      # result = Object
      $markdownlinkstoProcess.Count
      # result = 1





      share|improve this answer


























        1














        when you have ONE data row in a CSV file, the import produces a single object. that has a known bug in that it will report zero as the .Count of the $Var. this appears to happen with anything that returns a single PSCustomObject - but i aint sure of that.



        the solution is to force it to be an array. you can cast it as [array] or simply wrap it in @(). using your code for an example ...



        $markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
        $markdownlinkstoProcess.GetType()
        # result = PSCustomObject
        $markdownlinkstoProcess.Count
        # result = 0

        $markdownlinkstoProcess = @(Import-Csv $markdownlink -Delimiter ",")
        $markdownlinkstoProcess.GetType()
        # result = Object
        $markdownlinkstoProcess.Count
        # result = 1





        share|improve this answer
























          1












          1








          1






          when you have ONE data row in a CSV file, the import produces a single object. that has a known bug in that it will report zero as the .Count of the $Var. this appears to happen with anything that returns a single PSCustomObject - but i aint sure of that.



          the solution is to force it to be an array. you can cast it as [array] or simply wrap it in @(). using your code for an example ...



          $markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
          $markdownlinkstoProcess.GetType()
          # result = PSCustomObject
          $markdownlinkstoProcess.Count
          # result = 0

          $markdownlinkstoProcess = @(Import-Csv $markdownlink -Delimiter ",")
          $markdownlinkstoProcess.GetType()
          # result = Object
          $markdownlinkstoProcess.Count
          # result = 1





          share|improve this answer












          when you have ONE data row in a CSV file, the import produces a single object. that has a known bug in that it will report zero as the .Count of the $Var. this appears to happen with anything that returns a single PSCustomObject - but i aint sure of that.



          the solution is to force it to be an array. you can cast it as [array] or simply wrap it in @(). using your code for an example ...



          $markdownlinkstoProcess = Import-Csv $markdownlink -Delimiter ","
          $markdownlinkstoProcess.GetType()
          # result = PSCustomObject
          $markdownlinkstoProcess.Count
          # result = 0

          $markdownlinkstoProcess = @(Import-Csv $markdownlink -Delimiter ",")
          $markdownlinkstoProcess.GetType()
          # result = Object
          $markdownlinkstoProcess.Count
          # result = 1






          share|improve this answer












          share|improve this answer



          share|improve this answer










          answered Nov 10 at 14:47









          Lee_Dailey

          1,412177




          1,412177

























              0














              You still can use Measure-Object CmdLet (That I personaly Alias with count).



              ((Import-Csv $markdownlink -Delimiter ",") | Measure-Object).count





              share|improve this answer


























                0














                You still can use Measure-Object CmdLet (That I personaly Alias with count).



                ((Import-Csv $markdownlink -Delimiter ",") | Measure-Object).count





                share|improve this answer
























                  0












                  0








                  0






                  You still can use Measure-Object CmdLet (That I personaly Alias with count).



                  ((Import-Csv $markdownlink -Delimiter ",") | Measure-Object).count





                  share|improve this answer












                  You still can use Measure-Object CmdLet (That I personaly Alias with count).



                  ((Import-Csv $markdownlink -Delimiter ",") | Measure-Object).count






                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Nov 10 at 15:28









                  JPBlanc

                  51.8k986126




                  51.8k986126






























                      draft saved

                      draft discarded




















































                      Thanks for contributing an answer to Stack Overflow!


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.





                      Some of your past answers have not been well-received, and you're in danger of being blocked from answering.


                      Please pay close attention to the following guidance:


                      • Please be sure to answer the question. Provide details and share your research!

                      But avoid



                      • Asking for help, clarification, or responding to other answers.

                      • Making statements based on opinion; back them up with references or personal experience.


                      To learn more, see our tips on writing great answers.




                      draft saved


                      draft discarded














                      StackExchange.ready(
                      function () {
                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fstackoverflow.com%2fquestions%2f53239849%2funable-to-get-csv-row-count-in-powershell%23new-answer', 'question_page');
                      }
                      );

                      Post as a guest















                      Required, but never shown





















































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown

































                      Required, but never shown














                      Required, but never shown












                      Required, but never shown







                      Required, but never shown







                      Popular posts from this blog

                      Schultheiß

                      Verwaltungsgliederung Dänemarks

                      Liste der Kulturdenkmale in Wilsdruff