我有一个python程序,首先我编辑一个文件,然后根据修改后的文件执行一个子进程调用。 代码是
mwhome=sys.argv[1]
wlst=mwhome+"/oracle_common/common/bin/wlst.sh"
scriptloc=cwd+"/addldap.py"
dest=cwd+'/t6.py.temp'
source=open(scriptloc,'r')
destination=open('t6.py.temp','w')
for line in source:
if line.strip().startswith('adminUser'):
destination.write('adminUser=\"'+adminusername+"\"\n")
continue
elif line.strip().startswith('adminPassword'):
destination.write('adminPassword=\"'+adminpassword+"\"\n")
continue
elif line.strip().startswith('adminServerPort'):
destination.write('adminServerPort=\"'+adminserverport+"\"\n")
continue
else:
destination.write(line)
continue
shutil.move(dest, scriptloc)
print "starting adding ldap"
output = subprocess.call([ wlst,scriptloc])
如果我不执行循环和替换的修改文件,则subprocess.call正在工作。 如果我执行modify for循环,则子进程调用不会获取scriptloc文件,只是在没有适当参数的情况下执行wlst.sh。
哪个命令与执行干扰?
注意:放置一个source.close()并尝试但是徒劳
答案 0 :(得分:1)
destination.close()
就是那个伎俩。当像这里一样打开文件进行写入时,会缓冲各种.write()
。这意味着它们可能不会出现在真实文件中,也可能只出现在部分中,直到文件为flush()
- ed或close()
- ed。