<p><code>'cat new.txt | tr -d "s/,[]''*//g" >meantenbri.txt2'</code>没有做你认为应该做的事情,例如:</p>
<pre class="lang-py prettyprint-override"><code>>>> print 'cat new.txt | tr -d "s/,[]''*//g" >meantenbri.txt2'
cat new.txt | tr -d "s/,[]*//g" >meantenbri.txt2
</code></pre>
<p>请注意,中间的两个单引号不见了,这是因为实际上有两个单独的字符串并排出现,<code>'cat new.txt | tr -d "s/,[]'</code>和<br/>
<code>'*//g" >meantenbri.txt2'</code>,解释器将这些字符串连接在一起。要在字符串中实际包含这些单引号,有两个选项:</p>
<ul>
<li>使用三重引号:</li>
</ul>
<pre class="lang-py prettyprint-override"><code> com = """cat new.txt | tr -d "s/,[]''*//g" >meantenbri.txt2"""
</code></pre>
<ul>
<li><p>转义中间的单引号:</p>
<pre><code>com = 'cat new.txt | tr -d "s/,[]\'\'*//g" >meantenbri.txt2'
</code></pre></li>
</ul>
<p>请注意,整个<code>com = [...]</code>、<code>s0 = ''</code>、<code>com = ''.join(com)</code>实际上是不必要的,只需通过移除方括号从一开始将<code>com</code>创建为字符串即可。你知道吗</p>
<p>作为补充说明,<a href="http://docs.python.org/2/library/subprocess.html#subprocess.Popen" rel="nofollow">^{<cd8>}</a>比<code>os.system()</code>更适合运行外部程序。我认为在这种情况下,它会像这样(未经测试):</p>
<pre><code>import subprocess
cmd = ['tr', '-d', "s/,[]''*//g"]
p = subprocess.Popen(cmd, stdin=open('new.txt'),
stdout=open('meantenbri.txt2', 'w'))
p.communicate()
res = p.returncode
</code></pre>
<p>尽管Sven在评论中提到了这一点,但您首先不应该使用外部程序。你知道吗</p>