为什么Python 2.7 os.system(command)
有时会在Windows 8中递归而os.startfile(command)
没有递归?
我的命令是backup.bat
,这是一个Windows批处理文件。
backup.bat
的内容是:
"C:\Users\Frank Chang\Anaconda2\python.exe" -m animation_mini
@echo off
echo %time%
timeout 10 > NUL
echo %time%
我发现在animate
时多次调用animation_mini.py中的Python 2.7 os.system
函数的方式
用于在animate
函数入口点的开头放置一个print语句,并在控制台中计算print语句。
我今天被告知Python 2.7 os.system(command)
是C函数execve
的包装器。但是这个事实并没有解释我用os.system('backup.bat')
看到的递归。
os.system
是从adder.cgi调用的,这是一个Python 2.7 CGI脚本,其代码行为:
#!C:\Users\Frank Chang\Anaconda2\python.exe
import cgitb
import cgi
import os
import signal
import threading , time
import sys
sys.path.insert(0,"C:\Users\Frank Chang\Documents\Arduino\mary\data\usr\lib\python2.7\dist-packages\HTMLgen")
import HTMLgen
import subprocess
import win32api
import pandas as pd
def main():
form = cgi.FieldStorage()
numStr1 = form.getfirst("input1", "0")
numStr2 = form.getfirst("input2", "0")
numStr3 = form.getfirst("input3", "0")
numStr4 = form.getfirst("input4", "0")
numStr5 = form.getfirst("input5", "0")
numStr6 = form.getfirst("input6", "0")
numStr7 = form.getfirst("input7", "0")
numStr8 = form.getfirst("input8", "0")
numStr9 = form.getfirst("input9", "0")
numStr10 = form.getfirst("input10", "0")
numStr11 = form.getfirst("input11", "0")
numStr12 = form.getfirst("input12", "0")
numStr13 = form.getfirst("input13", "0")
numStr14 = form.getfirst("input14", "0")
from pandas import ExcelWriter
writer = ExcelWriter('PythonExport.xlsx')
from pandas import DataFrame
yourdf = DataFrame({'DC Start': numStr1, 'DC Duration': numStr2, 'Plant Start': numStr3, 'Plant Duration': numStr4,
'Supplier Start': numStr5, 'Supplier Duration': numStr6}, index=[0])
yourdf.to_excel(writer,'Disruptions')
yourdf = DataFrame({'FGI': numStr10, 'WIP': numStr11, 'DC': numStr12, 'Plant': numStr13,
'Supplier' : numStr14}, index=[0])
yourdf.to_excel(writer,'Policy')
writer.save()
os.system('backup.bat')
def processInput(numStr1, numStr2):
'''Process input parameters and return the final page as a string.'''
num1 = int(numStr1) # transform input to output data
num2 = int(numStr2)
total = num1+num2
return str(total)
def fileToStr(fileName):
"""Return a string containing the contents of the named file."""
fin = open(fileName);
contents = fin.read();
fin.close()
return contents
main()
我的CGI脚本可能是os.system('backup.bat')
递归的原因吗?
答案 0 :(得分:0)
昨天,eryksun和Blckkngt都有正确的答案,将多个版本混合在一起导致递归噩梦。
INTERNAL ERROR的解决方案:无法在pyinstaller中创建临时目录,可以通过使用win32api.SetDllDirectory(..)并复制父进程的环境变量并添加键值对“TEMP”,“C”来更正:/ TMP“到词典
CGI脚本与我们的动画功能是否连续多次运行无关。