-1

我有一个 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 正在工作。如果我执行修改 for 循环,则子进程调用不会获取 scriptloc 文件,而只是在没有适当参数的情况下执行 wlst.sh。

哪个命令与执行有关?

注意:放置一个 source.close() 并尝试但徒劳无功

4

1 回答 1

1

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

于 2013-04-04T11:23:52.307 回答