나는 시스템 프로그램을 호출하고 out.txt
파일에서 출력을 읽고, 그 출력 및 루프에서 작동하는 파이썬 스크립트가 있습니다. 그러나 작동하지 않으며 가까운 조사 결과 python 스크립트가 out.txt
을 한 번 열어 본 다음 이전 사본에서 계속 읽는 것으로 나타났습니다. 파이썬 스크립트가 각 반복마다 파일을 다시 읽도록하려면 어떻게해야합니까? 나는 비슷한 질문을 여기에 보았지만 파이썬 스크립트가 프로그램과 함께 실행되고 호출되지 않고 솔루션이 작동하지 않습니다. 내가 루핑하기 전에 파일을 닫으려고했는데 아무 것도하지 않았다.디스크에서 파이썬 새로 고침 파일
편집 : 이미 닫은 후 열려고 시도했지만 작동하지 않았습니다.
import subprocess, os, sys
filename = sys.argv[1]
file = open(filename,'r')
foo = open('foo','w')
foo.write(file.read().rstrip())
foo = open('foo','a')
crap = open(os.devnull,'wb')
numSolutions = 0
while True:
subprocess.call(["minisat", "foo", "out"], stdout=crap,stderr=crap)
out = open('out','r')
if out.readline().rstrip() == "SAT":
numSolutions += 1
clause = out.readline().rstrip()
clause = clause.split(" ")
print clause
clause = map(int,clause)
clause = map(lambda x: -x,clause)
output = ' '.join(map(lambda x: str(x),clause))
print output
foo.write('\n'+output)
out.close()
else:
break
print "There are ", numSolutions, " solutions."
당신은 그것을 닫을 수 다시 엽니 다
– tdelaney매번 파일에 쓰고 있습니까? –
이봐, 아직 거기 있니? 시스템 프로그램이 오래된'out.txt'를 지우고 새로운 것을 쓰게 될 가능성이 큽니다. 적어도 리눅스에서 열려있는 파일 핸들은 연결 해제 된 이전 파일을 가리키고 새로운 데이터를 보지 못합니다. 폐쇄/개방은 분명한 해결책이므로 작동하는지 알려주십시오. – tdelaney