title: python subprocess run works with single string but not list of strings
body: <p>I'm trying to initiate a command-line program with command-line options from my Python script using the <em>run</em> method from the <em>subprocess</em> module.</p>
  <p>My command is defined as a list of strings specifying the program and options as follows (where <code>pheno_fp</code> and <code>construction_fp</code> are strings representing file paths in my system and <code>exe</code> is a string representing the file path to the program I'm running):</p>
  <pre><code>    step1_cmd = [exe, 
                  &quot;--step 1&quot;,
                  &quot;--p &quot; + pheno_fp,
                  &quot;--b 1000&quot;,
                  &quot;--o &quot; + construction_fp + &quot;dpw_leaveout&quot;]
  </code></pre>
  <p><strong>Not working</strong> - When I try the following, the program I want to run is started but the command I've specified is interpreted incorrectly because the program exits with an error saying &quot;specify output file path with --o flag&quot;:</p>
  <pre><code>    test1 = subprocess.run(step1_cmd)
  </code></pre>
  <p><strong>Working</strong> - When I try the following, the program executes correctly, meaning all arguments are interpreted as intended:</p>
  <pre><code>    test1 = subprocess.run(&quot; &quot;.join(step1_cmd), shell=True)
  </code></pre>
  <p>If I understood the documentation correctly, the former approach is the recommended usage but I can't understand why it's not working. I'm pretty sure it's formatted the same as the examples in the documentation so I'm a bit stumped. Any ideas?</p>