如果在调用之前使用了修改文件,则不会执行子进程调用

时间:2013-04-04 06:55:12

标签: python subprocess

我有一个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()并尝试但是徒劳

1 个答案:

答案 0 :(得分:1)

destination.close()就是那个伎俩。当像这里一样打开文件进行写入时,会缓冲各种.write()。这意味着它们可能不会出现在真实文件中,也可能只出现在部分中,直到文件为flush() - ed或close() - ed。