我可以使用 .txt 文件来做到这一点,当发生某些事情时它会写入“ok”,如果 .txt 文件里面有“ok”,另一个程序会读取它并执行某些操作。但是,我想知道我是否可以用另一种方式来做。
问问题
856 次
2 回答
1
您可以使用信号,例如 USR1,但我认为您不能在 Python 中发出信号。您可以使用命名管道,而不是像现在这样通过文件进行通信。命名管道将提供一些额外的功能,请参见最后一段。
您将管道作为普通文件打开,然后像现在一样进行读写。你通过创建管道mkfifo filename
,也可以在你的python程序中创建。两个演示示例程序:
发件人:
fdw= os.open("./mypipe", os.O_WRONLY)
while (1):
try:
os.write(fdw, "OK\n")
except OSError, e:
if e.errno==errno.EPIPE:
#Receiver closed the pipe
print "Reader closed pipe\n"
sys.exit(0)
else:
#some other os problem
print os.strerror(e.errno)
time.sleep(3)
接收者:
fdr= os.open("./mypipe", os.O_RDONLY | os.O_NONBLOCK)
while (1):
try:
s= os.read(fdr, 10)
print s
except OSError, e:
if e.errno==errno.EBUSY:
print "nothing to read yet\n"
else:
print os.strerror(e.errno)
time.sleep(1)
发送方打开一个阻塞管道,因此如果接收方关闭管道,通常会在终止时出现异常。阅读器打开一个非阻塞管道,因此它在等待发送者写入的任何内容时不会挂起。当发送方或接收方关闭一个管道端时,阻塞/非阻塞的组合会产生不同的响应。如果有任何管道溢出的可能性(写入千字节,没有读取内容),您可能希望以非阻塞方式打开写入端。
于 2012-12-09T08:57:03.390 回答
-4
看来你想使用一个功能。我假设您正在按照进行各种测试的方式做一些事情,如果这是真的,每个人都会做不同的事情......
def function(parameters):
参数是函数中使用的对象:
def fib(a, b, c):
x=a*b*c*10
print x
这只是一个简单的功能,但你可以做非常复杂的事情。
我建议您参考 TutorialsPoint 上的这个网页:Python Functions。
如果您在另一个程序中具有该功能,则可以打开该文件:
open(file_name)
function(parameters)
python打开文件后,正常输入函数即可。这应该有效。
于 2012-11-13T18:29:16.637 回答