从python代码启动的实用程序不会写入文件

时间:2012-03-10 21:08:04

标签: python

我有两个用C ++,TCP / IP服务器和客户端编写的实用程序,我已经使用了多年。 服务器打开指定文件并等待客户端连接。建立连接后,服务器开始发送文件内容。客户端接收它并保存在文件中。 现在,我想编写一个python脚本来启动两个应用程序并等待它们完成。之后该脚本将完成其他一些工作。它是为Windows编写的。 这是我在python中的第一个脚本。我的第一个问题是,我可以看到两个应用程序已经启动并相互连接。我可以看到它,因为出现了两个DOS窗口并显示消息,告知我有关连接的信息。 但是,我没有看到必须由客户端创建的文件。怎么了。代码很简单,遵循。

import subprocess 

p = subprocess.Popen('C:\MyProjects\exes\FeedSender_exe\FeedSender.exe C:\MyProjects\exes\FeedSender_exe\FeedSender.ini') 
print "Start1"
p1 = subprocess.Popen('C:\MyProjects\exes\FeedReaderFileProcessor\FeadReaderi41.exe C:\MyProjects\exes\FeedReaderFileProcessor\Config.ini') 
print "Start2"

for line in p.stdout.readlines(): 
    print line, 
retval = p.wait()
print "Finish1"
retval = p1.wait() 
print "Finish2"

2 个答案:

答案 0 :(得分:1)

设置子进程的当前工作目录可能会有所帮助。

p = subprocess.Popen(r'C:\MyProjects\exes\FeedSender_exe\FeedSender.exe C:\MyProjects\exes\FeedSender_exe\FeedSender.ini',
        cwd=r'C:\MyProjects\exes\FeedSender_exe')

根据您设置程序的方式,输出文件应显示在C:\MyProjects\exes\FeedSender_exe中。我显然无法获得你的程序,所以我无法测试它。

答案 1 :(得分:0)

添加双重'\',如下:

p = subprocess.Popen('C:\\MyProjects\\exes\\FeedSender_exe\\FeedSender.exe C:\\MyProjects\\exes\\FeedSender_exe\\FeedSender.ini')