【问题标题】:Execution of script using Popen fails使用 Popen 执行脚本失败
【发布时间】:2009-07-16 14:42:42
【问题描述】:

我需要通过服务在后台执行脚本。

服务使用 Popen 启动脚本。

p = Popen('/path/to/script/script.py', shell=True)

为什么当我将文件写入包含在 for 循环中时,以下脚本不起作用?

#!/usr/bin/python

import os
import time

def run():
    fd = open('/home/dilleyjrr/testOutput.txt', 'w')

    fd.write('Start:\n')
    fd.flush()

    for x in (1,2,3,4,5):
        fd.write(x + '\n')
        fd.flush()
        time.sleep(1)

    fd.write('Done!!!!\n')
    fd.flush()

    fd.close()

if __name__ == '__main__':
    run()

【问题讨论】:

    标签: python mod-python popen


    【解决方案1】:

    这是你的错误:

    for x in (1,2,3,4,5):
        fd.write(x + '\n')
    

    您不能将 int 与字符串相加。改为使用(例如)

    for x in (1,2,3,4,5):
        fd.write('%s\n' % x)
    

    【讨论】:

    • 我对文件的权限为 777。我刚刚将其切换到 /tmp,您的权限会更好地进行此测试。如果我注释掉循环文件写入输出结果是一样的......开始:完成!!!!与他们一起包括输出是......开始:
    • Tx Ron 检查权限问题——提示我进行彻底的代码审查并发现您的错误,请参阅我刚刚编辑的答案。
    • 谢谢 --- 我对 python 太陌生,但我一直忘记你不能像在 perl 中那样做。现在已经解决了,我可以使用真正的脚本来解决我的问题。 (认为​​它们与环境有关。)我将使用这个来吐出环境。
    【解决方案2】:

    您遇到了什么错误?没有错误很难看到问题。无论如何,文件是在其他地方打开的吗?

    【讨论】:

    • 我没有看到任何错误。该脚本在服务的后台执行。该文件未使用任何其他应用程序打开。如果在某些地方应该有错误,我是编写 services/mod_python/apache 的新手,你能指出日志文件吗?谢谢。
    猜你喜欢
    • 1970-01-01
    • 2020-11-07
    • 2011-06-28
    • 2021-05-18
    • 2021-09-19
    • 2020-11-24
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多