类name.py[整数列表2,4,…],integer中的python sys.argv

类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

我想传递两个参数,一个作为列表[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 = []

    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]) 这意味着args
30 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