PDA

View Full Version : پرینت یک عبارت برای ورودی اسکریپت دیگر در کنسول



mehrdad1991h
شنبه 13 تیر 1394, 10:46 صبح
سلام
من یک اسکریپت برای این که یک برنامه ی کامند لاین دیگر را باهاش اجرا کنم و ورودی را درش خودکار وارد کنم نوشتم
بدین صورت کار میکنه که توی cmd برنامه ی جدید باز میشه و وقتی input میخواهد میخواهم یه مقداری را print کنم که به عنوان ورودی برنامه ی دوم محسوب بشه
ولی این کار عملی نشد
من با چند روش این کار را انجام دادم
اول از subprocess و کد زیر استفاده میکردم


p = subprocess.Popen('"C:\app.exe" -sample',
stdin=subprocess.PIPE, universal_newlines=True, shell=True)
p.stdin.write("abc\n")
p.stdin.flush()

بعد با این کد تست کردم



p = subprocess.Popen('"C:\app.exe" -sample',
stdin=subprocess.PIPE, universal_newlines=True, shell=True)

p.communicate(input='my_input_string')[0]

ولی با این دوتا کد مشکل داره و برنامه کرش میکنه با stdin و stdout که استفاده کنم برنامه ی دوم که ورودی لازم داره کرش میکنه

خوب روفتم با theard اون ورودی را print کردم
اینجوری


def worker():
time.sleep(2)
print '1\n'

def main():

t = threading.Thread(target=worker)
t.start()
subprocess.Popen([PATH, '-sample'])

اینطوری print درست کار میکنه ولی توی اون یکی برنامه print نشده و باز هم جوابگو نبود

الان یک هفته هم میشه من مشکلم با این مورد هست و زبان پیش فرض برنامه نویسی من پایتون نیست و مسلط هم نیستم
ولی در این مورد باید ازش استفاده کنم
لطفا یک راهنمایی کنید و یک روشی کاری معرفی کنید که بتونم این عمل را انجام بدهم
سپاس

n.nowroozi
یک شنبه 14 تیر 1394, 08:20 صبح
شاید باید یه وقفه ای بین کامنتدهایی که میفرستی و انتظار جوابی که داری بزاری این رو نگاه کن:
https://www.daniweb.com/software-development/python/threads/198759/control-external-program-from-python-script