我有两个用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"
答案 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')