سؤال

وأنا تشغيل برنامج نصي لإطعام ملف إكس بيان مثل أدناه:

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

وأنا باستخدام موجه الأوامر وعند تشغيل إكس مع هذه الأرقام هناك أوقات عندما لا يبدو أن في الأمر. مثل بعض الأحيان أنها سوف طباعة 3 أقوال 52.62263 ولكن بعد ذلك قبل أن تطبع كل ذلك سوف طباعة واحدة 26.5651 ومن ثم العودة إلى 52.62263. انها ليست فقط تلك الأرقام التي تتصرف مثل هذا. يدير مختلفة قد تكون أرقام مختلفة (A 52.62263 بين "اثنين" 90 البيانات). جميع في كل شيء، أريد أن طباعته من أجل أعلى إلى أسفل. أي اقتراحات واستخدام قانون بلدي أي حلول مفيدة؟ بفضل!

هل كانت مفيدة؟

المحلول

وأعتقد أن ما يحدث الآن هو أنك لا تنتظر تلك العمليات لإنهاء قبل انهم المطبوعة. جرب شيئا مثل هذا في الخطوط الخاصة بك الأخيرة (2):

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

نصائح أخرى

وz = ('0.') ليس الصفوف (tuple)، وبالتالي حلقة for k in z الخاص بك وسوف أعاد فوق الحروف "0" و "". إضافة فاصلة لنقول الثعبان تريد أن تكون الصفوف (tuple):

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 / تجميل كل شيء:

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