Django Python脚本不输出文件

2024-05-19 14:31:38 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个脚本,通过Django视图执行以下代码:

# generate dag file
        try:
            commandString = [
                'python',
                os.path.join('/srv/nfsshare/transcode50', userFolder, directory, 'condor_execute.py')
            ]
            subprocess.check_call(commandString,
                            stdout=open('/srv/nfsshare/transcode50/output2.txt', 'w'),
                            stderr=subprocess.STDOUT)
        except Exception, e:
            open('/tmp/test_exception.txt', 'w').write(str(e))
            raise

它应该做的是执行我生成的Python文件。如果我从服务器的命令提示符(即python /srv/nfsshare/transcode50/cogden/algorithms/condor_execute.py)运行这个确切的命令,它就可以正常工作,并生成应该在该目录中的所需文件。但是,如果我从Django运行它,它不会产生任何错误消息,也不会产生正确的控制台输出(基本上是说“createdfileblah at blah”),但不会产生任何文件,而它通常会生成两个。我没有得到任何权限错误或任何东西,并已确保目录的chmoded适当。你知道吗


Tags: 文件djangopy目录txt脚本execute错误
1条回答
网友
1楼 · 发布于 2024-05-19 14:31:38

我怀疑你的进程从来没有开始关闭这个文件(因为你不能显式地关闭它,因为你没有引用它-当作为脚本运行时-解释器会停止-但是Django在加载的进程中的工作方式不同等等…),而且它不够大,不能被刷新-试着移出你的open。你知道吗

with open('/srv/nfsshare/transcode50/output2.txt', 'w') as stdout:   
    subprocess.check_call(commandString, stdout=stdout, stderr=subprocess.STDOUT)

另外,确保在进行更改时确保Django服务器重新启动/类似于确保代码重新加载和更改生效。你知道吗

相关问题 更多 >