有没有一种方法可以添加参数作为变量,从python文件中执行命令行指令



我有一个文件购买水果.py这将解析参数并将它们发送到名为buyin.py的文件例如此命令:$pythonbuyfruits.py--数量20--数量50--果苹果

将导致以50个硬币购买20个苹果

我想从另一个文件中获取参数

比方说input.py

amt = input("Enter amount ")
q = input("Enter quantity you want")
what = input("Enter fruit you want to buy ")

我想要这个input.py文件来执行这个代码

$pythonbuyfruits.py——数量q——数量amt——水果什么

使用os.system:

import os
amt = input("Enter amount ")
q = input("Enter quantity you want")
what = input("Enter fruit you want to buy ")
os.system("buyfruits.py --quantity %s --amount %s --fruit %s" % (q, amt, what))

或子流程,如果您想获取buyfutures.py:的输出

import subprocess, shlex # shlex needed for command-line splitting
amt = input("Enter amount ")
q = input("Enter quantity you want")
what = input("Enter fruit you want to buy ")
p = subprocess.Popen(shlex.split("buyfruits.py --quantity %s --amount %s --fruit %s" % (q, amt, what)))
print("output : %snerrors : %s" % p.communicate()) # print output and errors of the process

了解python子流程模块。

#I assume you are using Python3.x
import subprocess
amt = input("Enter amount ")
q = input("Enter quantity you want")
what = input("Enter fruit you want to buy ")
output=subprocess.check_output(['buyfruits.py', '--quantity', q, '--amount', amt, '--fruit', what], shell=True)
print(output)

您也可以使用call、checkcall。

您可以使用getopt和sys库

import getopt, sys
def get_arguments():
fruit = None
quantity = None
amount = None
argv = sys.argv[1:]
opts, argv = getopt.getopt(argv, "a:q:f:")
for opt, argv in opts:
if opt in ['-a']:
amount = argv
elif opt in ['-q']:
quantity = argv
elif opt in ['-f']:
fruit = argv

print('amount : {}'.format(amount))
print('quantity : {}'.format(quantity))
print('fruit : {}'.format(fruit))
get_arguments()

输入:

$python file_1.py-一个20-q 5-f的苹果

输出:

数量:20
数量:5
水果:苹果

最新更新