一次又一次地编辑 python 个脚本文件

editing python script file again and again

您好,我想检查氨基酸序列的分值,为此我编写了以下代码,效果非常好。但问题是每次我都必须编辑文件。有什么办法可以从命令界面给出氨基酸序列吗?

AA_seq='AVTLSPQRS' # this is the input variable
sum=0

value={"V": 3.1,"Y":3.5,"W":4.7,"T" :5.3,"S":5.1,"P":3.7,
"F":4.7,"M":1.5,"K":8.9,"L":6,"I":4.3,"H":3.3,"G":7.1,
"E":7,"Q":5.4,"C":0.6,"D":7.6,"N":6,"R":8.7,"A":3.4}

print("Total length of sequence is:", len(AA_seq))
for i in AA_seq:
    
    sum+=value[i]


print("Total Score is :", sum)

如果我理解你的问题,你可以使用 python 的 'input' 功能来解决它​​。 这将使您能够从 CLI 提供输入。下面是修改代码。

希望对您有所帮助。 另外,如果你想避免 small/caps hedache 输入,你可以使用 .upper().

虽然这个问题不需要。

AA_seq=input("write Amino Acid Sequence:" )
AA_seq=AA_seq.upper()

sum=0

value={"V": 3.1,"Y":3.5,"W":4.7,"T" :5.3,"S":5.1,"P":3.7,
"F":4.7,"M":1.5,"K":8.9,"L":6,"I":4.3,"H":3.3,"G":7.1,
"E":7,"Q":5.4,"C":0.6,"D":7.6,"N":6,"R":8.7,"A":3.4}

print("Total length of sequence is:", len(AA_seq))
for i in AA_seq:
    
    sum+=value[i]


print("Total Score is :", sum)

您可以从 sys.argv 中的命令行轻松访问字符串参数。 (由于历史原因,sys.argv[0] 包含脚本本身的名称,因此请忽略它。)

import sys

value={"V": 3.1, "Y": 3.5, "W": 4.7, "T": 5.3, "S": 5.1,
       "P": 3.7, "F": 4.7, "M": 1.5, "K": 8.9, "L": 6, "I": 4.3, 
       "H": 3.3, "G": 7.1, "E": 7, "Q": 5.4, "C": 0.6, "D": 7.6,
       "N": 6, "R": 8.7, "A": 3.4}

for AA_seq in sys.argv[1:]:
    print("Total length of sequence", AA_seq, "is:", len(AA_seq))
    total = 0
    for i in AA_seq:
        total += value[i]
    print(AA_seq, "Total Score is :", total)

您会注意到我添加了一个循环,因此您可以根据需要在一个 运行 中处理多个序列。

用法:

python3 script.py 'AVTLSPQRS' 'KIIGAPEAR'

(如果这是您平台上 Python 3 可执行文件的名称,则只是 python)。

接受来自命令行的输入使您能够使用 shell 的各种功能(制表符完成、历史记录、变量扩展等)以及从其他脚本以编程方式使用此脚本。

一个合适的工具可能也应该包括一些错误处理(基本上检查是否有参数,如果没有则显示错误)但这应该已经让你开始了。此外,如果输入字符串包含不在 value 散列中的符号,则可能会捕获 KeyError,这样你就不会得到回溯。