子进程Python错误

时间:2016-03-03 17:03:07

标签: python terminal subprocess

当我从python运行这个subprocess命令时,它看起来像python停滞并且从不输出任何东西:

msg = subprocess.call(['/Users/admirmonteiro/bin/Praat', '/Users/admirmonteiro/tmp/tmp.praat'])

但是当我从终端运行命令时,它会按原样运行和关闭:

Praat /tmp/tmp.praat 

是否有人能够告诉我为什么python没有完成代码并且停滞不前并且没有输出任何东西?

谢谢!

2 个答案:

答案 0 :(得分:0)

您可以尝试确保stdin和stdout(或其他文件描述符)不会导致问题:

p = subprocess.POpen(
    ['/Users/admirmonteiro/bin/Praat', '/Users/admirmonteiro/tmp/tmp.praat'],
    stdin=subprocess.PIPE,
    stdout=subprocess.PIPE,
    stderr=subprocess.STDOUT,
    close_fds=True,
)
print p.communicate()
print p.wait()

答案 1 :(得分:-1)

似乎你已经交换了论点。

    private void buttonSearch_Click(object sender, EventArgs e)
    {
        SqlConnection con = new SqlConnection("*some connection info*");
        con.Open();
        SqlCommand cmd = con.CreateCommand();
        cmd.CommandType = CommandType.Text;
        cmd.CommandText = "from C in Contact join P in Phones on C.[ID Επαφής] equals P.[ID Επαφής] where (P.Αριθμός = ('"+txtTelephone.Text+"')) select new {C.Επώνυμο, C.Όνομα, C.[Ημ. Γέννησης], P.[Περιγραφή Τηλεφώνου], P.Αριθμός}";
        cmd.ExecuteNonQuery();
        DataTable dt = new DataTable();
        SqlDataAdapter da = new SqlDataAdapter(cmd);
        da.Fill(dt);
        dataGridView1.DataSource = dt;

        con.Close();
    }

应该是

msg = subprocess.call(['/Users/admirmonteiro/bin/Praat', '/Users/admirmonteiro/tmp/tmp.praat'])
相关问题