类name.py[整数列表2,4,…],integer中的python sys.argv
我想传递两个参数,一个作为列表[8,10],一个作为终端中的整数。 文件MySeq.py 比如:MySeq.py[8,10],32 我该怎么做类name.py[整数列表2,4,…],integer中的python sys.argv,python,class,command-line-arguments,argv,sys,Python,Class,Command Line Arguments,Argv,Sys,我想传递两个参数,一个作为列表[8,10],一个作为终端中的整数。 文件MySeq.py 比如:MySeq.py[8,10],32 我该怎么做 import sys class MySeq(): def __init__(self, positions, length): self.positions = positions self.length = length def length_fragments(self): diffs = [] diff
import sys
class MySeq():
def __init__(self, positions, length):
self.positions = positions
self.length = length
def length_fragments(self):
diffs = []
diffs.append(self.positions[0])
for i in range(1, len(self.positions)):
diffs.append((self.positions[i] - self.positions[i - 1]))
diffs.append(self.length - self.positions[len(self.positions) - 1])
return diffs
#positons = sys.argv[1].replace('[', ' ').replace(']', ' ').replace(',', ' ').split()
#positions = [int(i) for i in a]
#length = int(sys.argv[2])
print(MySeq(positions, length).length_fragments())
一种非常粗糙的方法是传递这样的论点:
$ python filename.py 30 50 13
代码如下:
$ python filename.py 30 50 13
导入系统
int_arg=int(sys.argv[-1])
list\u from\u args=list(sys.argv[1:-1])
对于范围内的i(len(列表参数中的参数)):
list_from_args[i]=int(list_from_args[i])
这意味着args30 50
将被转换为python列表对象(包含int),最后一个参数(13
在本例中)将被视为int
请记住,这是一种粗糙的方法,可能还有另一种方法
python MySeq.py 8,10 32
由于sys.argv自动是一个字符串列表,所以只需使用逗号并将其拆分为一个列表即可
def __init__(self):
self.positions = sys.argv[1].split(',') # 8,10 to ['8', '10']
self.length = int(sys.argv[2]) # 32
对不起,我还不完全清楚如何编辑我的代码:
classmyseq():
def\uuu init\uuuuuuuuuuuuuuself:
`self.positions=sys.argv[1].split(',')8,10 to['8',10']`self.length=int(sys.argv[2])#32`+我需要如何编辑终端输入的代码,例如:python MySeq.py[8,10]32