Как я могу выполнить аргументы командной строки, как если бы они были кодом? - PullRequest
0 голосов
/ 15 апреля 2020

Я хочу разработать программу, в которой я могу передать python код в качестве аргумента командной строки и запустить его как команду.

Чтобы объяснить это,

cmd>python temp.py print('nirmal')
print('patel')

Вывод должен быть

>>>print('nirmal')
nirmal
>>>print('patel')
patel

Пробный код:

import sys
from subprocess import Popen,PIPE

data = sys.stdin.readlines()
#print(data)

process=Popen("python",shell=True)
process.wait()

output of above code Этот код запускает python оболочку, но как ввести python код в качестве аргумента?

Если у вас есть другая альтернатива для той же цели, пожалуйста, дайте мне знать.

Ответы [ 2 ]

1 голос
/ 15 апреля 2020

Я полагаю, что вы можете выполнить это, используя exec().

import sys

for i in range(1, len(sys.argv)):
    exec(sys.argv[i])

ПРИМЕЧАНИЕ. Диапазон начинается с 1, поскольку sys.argv[0] будет именем ваш скрипт.

Проверенные результаты в терминале bash:

josh@josh-desktop:~$ python3 test.py "x = 1 + 1" "print(str(x))"
2

0 голосов
/ 26 апреля 2020
import win32com.client
import sys
import sys
from subprocess import Popen,PIPE,call
import time
# process=Popen("pip list --outdated",stdout=PIPE,stdin=PIPE,shell=True,bufsize=1)
# data= process.stdout.readlines()

# for i in range(2,len(data)):
#   temp=data[i].decode("utf-8").split(' ')
#   print(temp[0])
#   command="runas /user:administrator 'pip install {0} --upgrade'".format(temp[0])
#   print(command)

shell = win32com.client.Dispatch("WScript.Shell")
# shell.AppActivate("Outlook")
shell.SendKeys('runas /user:administrator "pip install pip --upgrade"{ENTER}')
shell.SendKeys("password{ENTER}")
print(shell)
shell.SendKeys('runas /user:administrator "pip install pygame"{ENTER}')
shell.SendKeys("password{ENTER}")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...