我有一个文件购买水果.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
水果:苹果