Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python sys.argv和定义无效的输入组合_Python_Input_Pycharm_Definition_Argv - Fatal编程技术网

Python sys.argv和定义无效的输入组合

Python sys.argv和定义无效的输入组合,python,input,pycharm,definition,argv,Python,Input,Pycharm,Definition,Argv,我有一个类似于下面的python脚本,我试图在shell中运行它。我想使用argv或input来提供名为index1和index2(ACCGTCG和TTCCAGC)的特定输入以及要处理的文件名。我尝试了两种方法(分别使用sys.argv和input),如下所示,但没有得到任何输出 对于sys.argv: #!/usr/bin/python import sys from Bio import SeqIO def dual_index_positions(): script=sys.a

我有一个类似于下面的python脚本,我试图在shell中运行它。我想使用
argv
input
来提供名为index1和index2(
ACCGTCG
TTCCAGC
)的特定输入以及要处理的文件名。我尝试了两种方法(分别使用sys.argv和input),如下所示,但没有得到任何输出

对于sys.argv:

#!/usr/bin/python

import sys
from Bio import SeqIO

def dual_index_positions():
    script=sys.argv[0]
    index1=sys.argv[1]
    index2=sys.argv[2]
    input_file=sys.argv[3]
    count=0 
    with open(input_file, "r") as Fastq:
        for record in SeqIO.parse(Fastq,'fastq'): 
            if index1 in record.seq and index2 in record.seq: 
                print(record.name)
                ind1_rec=record.seq.find(index1) 
                ind2_rec=record.seq.find(index2)
                rp_ind2=ind2_rec+len(index2)
                dist=(ind1_rec)-(rp_ind2)
                print('Index1 and index2 positions are '+ str(ind1_rec+1) + ' and ' + str(ind2_rec+1) + ' respectively' +
                  '; distance is: ' + str(dist))
                count+=1
    print('The total number of hits is: '+ str(count))
    


if __name__ == '__dual_index_positions__':
    dual_index_positions()
通过输入:

#!/usr/bin/python

from Bio import SeqIO 

def dual_index_positions(): 
    input_file=input('please enter your input_file: ')
    index1=str(input('please enter your index 1: '))
    index2=str(input('please enter your index 2: '))
    count=0 
    with open(input_file, "r") as Fastq:
        for record in SeqIO.parse(Fastq,'fastq'):
            if index1 in record.seq and index2 in record.seq: 
                print(record.name)
                ind1_rec=record.seq.find(index1) 
                ind2_rec=record.seq.find(index2)
                rp_ind2=ind2_rec+len(index2)
                dist=(ind1_rec)-(rp_ind2)
                print('Index1 and index2 positions are '+ str(ind1_rec+1) + ' and ' + str(ind2_rec+1) + ' respectively' +
                  '; distance is: ' + str(dist))
                count+=1
    print('The total number of hits is: '+ str(count))
    


if __name__ == '__dual_index_positions__':
    dual_index_positions()
有人能帮我找到臭虫在哪里吗?提前谢谢你。

而不是这个

if __name__ == '__dual_index_positions__':
    dual_index_positions()
用这个

if __name__ == '__main__':
    dual_index_positions()

\uuuuu name\uuuuu='\uuuuu dual\u index\u positions\uuuuu'
的RHS不是您必须调用的函数名,它是模块的名称,默认情况下它的值为
\uuuuu main\uuuuuu

您所说的“我没有输出”是什么意思?
if-uuuuu-name\uuuuuu='.\uuuu-dual\u-index\u-positions\uuuuuu'.
这通常是
if-uuuuuuu-name\uuuuuuuuu='.\uuuuuu-main\uuuu'.
如果直接运行文件名,则不使用文件名。我使用shell运行代码,但不会处理或打印任何内容。