python - sys.argv 不传递多个参数
问题描述
有一个使用 AI 进行员工调度的项目。我在if len(sys.argv)<=1:
sys.argv 没有传递超过 1 个参数时遇到问题,只有这个条件为真,输出为
'Usage is main [section|sets|instructor|pairs|run] [seed]'
我希望 sys.argv 得到 3 个参数,这样我就可以看到程序的其余部分是如何工作的。
我的代码
def main():
import sys
import random
import tableutils
print(len(sys.argv))
nbcourse=7
nbsets=6
nbinstructor=5
nbpairs=2
if len(sys.argv)<=1:
print('Usage is main [section|sets|instructor|pairs|run] [seed]')
return
elif len(sys.argv)>=3:
random.seed(int(sys.argv[2]))
S,nbsection=gen_section(nbcourse)
R=gen_sets(nbsection,nbsets)
I=gen_instructor(nbinstructor,nbsets,nbcourse,nbpairs)
P=gen_pairs(nbpairs,nbsection)
if sys.argv[1]=='section':
tableutils.printmat(tableutils.wrapmat(S,[],['Id','Course id','Meeting Time']),True,0)
elif sys.argv[1]=='sets':
RR=[]
for i in range(len(R)):
RR.append([R[i][0],tableutils.set2string(R[i][1])])
tableutils.printmat(tableutils.wrapmat(RR,[],['Id','Sections']),True,0)
elif sys.argv[1]=='instructor':
RI=[]
for i in range(len(I)):
RI.append([I[i][0],
tableutils.set2string(I[i][1]),
tableutils.set2string(I[i][2]),
tableutils.set2string(I[i][3]),
tableutils.set2string(I[i][4])])
tableutils.printmat(tableutils.wrapmat(RI,[],['Id','Load','Course weights','Set weights','Pair weights']),True,0)
elif sys.argv[1]=='pairs':
RP=[]
for i in range(len(P)):
X=[str('(')+str(e[0])+str(' ')+str(e[1])+str(')') for e in P[i][1]]
RP.append([P[i][0],tableutils.set2string(X)])
tableutils.printmat(tableutils.wrapmat(RP,[],['Id','Section pairs']),True,0)
elif sys.argv[1]=='run':
rc,x,xs,v=solve_model(S,I,R,P)
#tableutils.printmat(x)
#print(xs)
XS=[]
for i in range(len(xs)):
XS.append([xs[i][0],
['{0:2}'.format(e[0])+' : ('+'{0:2}'.format(e[1][0])+' '+'{0:2}'.format(e[1][1])+' '+'{0:2}'.format(e[1][2])+')' for e in xs[i][1]]])
tableutils.printmat(tableutils.wrapmat(XS,[],['Instructor','Section (WC WR WP)']),True,1)
main()
我想让这个elif len(sys.argv)>=3:
条件成真我该怎么办?我在 pycharm idle 上运行这个程序
解决方案
sys.argv[0] 始终是您的程序名称。如果传递了其他参数,则 len(sys.argv) 将 > 1,并且 sys.argv 的后续元素包含其他命令行参数。您似乎正在使用 0 个参数运行脚本,并且它正在打印一条消息,为您提供所需参数的选项。如果您当前正在运行
main
尝试运行
main run 0
或建议的论点的其他排列。
要在使用 PyCharm 时将参数传递到脚本中,请参阅此答案
推荐阅读
- reactjs - React 设置:Git 子模块被 Husky - 6.0.0 忽略
- python - 使用 Selenium 和 Python 抓取 Flipkart 移动设备的详细信息
- java - 用Java实现CustomList的List接口
- npm - npm install 导致 core-js 安装后错误,Plesk 环境中的 Nuxt 应用程序
- java - IntelliJ Spring启动项目突然报错所有包都不存在
- tkinter - 测试(Python)tkinter 菜单对话框?
- sql-server - 使用 XQUERY 正确地将 XML 节点中的值替换为引用节点并过滤所需的值
- react-native - 当嵌套导航器在 android 和 ios 中反应原生时,反应导航 5 深层链接不起作用
- command-line - 如何将路径从“打开方式”传递到由 install4j 创建的可执行文件?
- mousedown - Mousedown 没有在 Gmap-vue 内触发