문제

EXE 파일을 공급하기 위해 스크립트를 실행하고 있습니다.

for j in ('90.','52.62263.','26.5651.','10.8123.'):
    if j == '90.':
        z = ('0.')
    elif j == '52.62263.':
        z = ('0.', '72.', '144.', '216.', '288.')
    elif j == '26.5651':
        z = ('324.', '36.', '108.', '180.', '252.')
    else:
        z = ('288.', '0.', '72.', '144.', '216.')

    for k in z:

        exepath = os.path.join('\Program Files' , 'BRL-CAD' , 'bin' , 'rtarea.exe')
        exepath = '"' + os.path.normpath(exepath) + '"'
        cmd = exepath + '-j' + str(el) + '-k' + str(z)

        process=Popen('echo ' + cmd, shell=True, stderr=STDOUT )
        print process

나는 명령 프롬프트를 사용하고 있으며이 숫자로 Exe를 실행할 때 순서대로 보이지 않는 경우가 있습니다. 때로는 52.62263의 3 개의 진술을 인쇄하지만 모두 인쇄되기 전에 단일 26.5651을 인쇄 한 다음 52.62263으로 돌아갑니다. 이와 같이 행동하는 것은 그 숫자만이 아닙니다. 다른 실행은 다른 숫자 일 수 있습니다 ( "2"90 문의 52.62263). 대체로, 나는 그것을 맨 아래로 인쇄하기를 원합니다. 제안과 내 코드 사용 유용한 솔루션이 있습니까? 감사해요!

도움이 되었습니까?

해결책

지금 일어나고있는 일은 인쇄하기 전에 그 과정이 완료되기를 기다리지 않는다는 것입니다. 마지막 2 줄에서 이와 같은 것을 시도하십시오.

from subprocess import Popen, STDOUT
stdout, stderr = Popen('echo ' + cmd, shell=True, stderr=STDOUT).communicate()
print stdout

다른 팁

z = ('0.') 따라서 튜플이 아닙니다 for k in z 루프는 "0"및 ""문자를 반복합니다. 쉼표를 추가하여 파이썬을 튜플이되기를 원한다고 말합니다.

z = ('0.',)

Eduffy가 말한 것. 그리고 이것은 조금 더 깨끗합니다. 단지 인쇄하지만 아이디어를 얻습니다.

import os

data = {
    '90.': ('0.',),
    '52.62263.': ('0.', '72.', '144.', '216.', '288.'),
    '26.5651.': ('324.', '36.', '108.', '180.', '252.'),
    '10.8123.': ('288.', '0.', '72.', '144.', '216.'),
}

for tag in data:
    for k in data[tag]:
        exepath = os.path.join('\Program Files', 'BRL-CAD', 'bin', 'rtarea.exe')
        exepath = '"' + os.path.normpath(exepath) + '"'
        cmd = exepath + ' -el ' + str(tag) + ' -az ' + str(data[tag])
        process = 'echo ' + cmd
        print process

이 코드에 대해 몇 가지 게시물을 만들었 기 때문에 모든 것을 정확하게/pythonify/beafife 할 수 있습니다.

for j,z in {
        '90.'       : ('0.',) ,
        '52.62263.' : ('0.',   '72.', '144.', '216.', '288.') ,
        '26.5651.'  : ('324.', '36.', '108.', '180.', '252.') ,
        '10.8123.'  : ('288.', '0.',  '72.',  '144.', '216.')
    }.iteritems():

    for k in z:
        exepath = os.path.join('\Program Files' , 'BRL-CAD', 'bin' , 'rtarea.exe')
        exepath = '"%s"' % os.path.normpath(exepath)
        cmd = exepath + '-j' + str(el) + '-k' + z

        process = Popen('echo ' + cmd, shell=True, stderr=STDOUT )
        print process
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top