我可以使用.txt文件来执行此操作,当发生某些事情时,它会写入“ok”,而另一个程序会读取它并在.txt文件中包含“ok”时执行某些操作。但是,我想知道我是否可以采用其他方式。
答案 0 :(得分: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)
发件人打开阻塞管道,因此如果接收器关闭管道,通常在终止时会出现异常。阅读器打开一个非阻塞管道,以便在等待发件人写入的任何内容时不会挂起。当发送方或接收方关闭一个管道端时,阻塞/非阻塞的组合产生不同的响应。如果有任何管道溢出的可能性(写入kbytes,没有读取),您可能希望打开写入结束非阻塞。
答案 1 :(得分:-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打开文件后,只需正常输入该函数即可。这应该有用。