0

我可以使用 .txt 文件来做到这一点,当发生某些事情时它会写入“ok”,如果 .txt 文件里面有“ok”,另一个程序会读取它并执行某些操作。但是,我想知道我是否可以用另一种方式来做。

4

2 回答 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 回答