Python 如何将脚本中的3个循环重新安排为一个循环

Python 如何将脚本中的3个循环重新安排为一个循环,python,Python,我有这个脚本,它包含四个不同的函数。函数2-4有一个公共路径,即for循环。我想获得一些帮助,这样我就可以对“for循环”进行排序,使其成为一个循环,但这取决于从正确的文件(fastqs、faster或xml)获取数据的函数 > def One(): #gene extraction #do something One() def Two(path_to_folder_H*,something_else): # de novo assembly #do something

我有这个脚本,它包含四个不同的函数。函数2-4有一个公共路径,即for循环。我想获得一些帮助,这样我就可以对“for循环”进行排序,使其成为一个循环,但这取决于从正确的文件(fastqs、faster或xml)获取数据的函数

> def One(): #gene extraction
    #do something
One()

def Two(path_to_folder_H*,something_else): # de novo assembly
    #do something with files

folders=glob.glob(path_to_folder_H*)
for folder in folders:
    my_file=glob.glob(file.fastqs)
    if folder exit:
       #do something
    elif:
        # do something else
   Two(path_to_folder_H*,something_else)

def Third(path_to_folder_H*, someting_else_2): #database+blast
    #do something

folders=glob.glob(path_to_folder_H*)
for folder in folders:
    my_file=glob.glob(file.fa)
    Third(path_to_folder_H*,something_else_2)

def Fouth(path_to_folder_H*,something_else_3): #parsing file
    #do someething
count=0
dict={}
folders=glob.glob(path_to_folder_H*)
for folder in folders:
    my_file=glob.glob(file.xml)
    if something:
           #do something
    elif:
   #something else
    Fourth(path_to_folder_H*,something_else_3)

这段代码大约有200行长,我只是简单地把它缩写了一下。第一个函数从文件中提取数据。第二个函数使用fastqs文件进行novo组装,并给出confing.fa。第三个函数使用cotings.fa和第一个函数获得的文件来创建数据库,并使用blast生成一个xml文件。第四个函数解析使用第三个函数获得的xml。

通过对问题的最新编辑,我也编辑了这个答案。 您可以简单地在Python脚本的顶部定义函数。 使用您的代码,如下所示:

def One():
    # do one

def Two(path_to_folder_H*,something_else):
    #do something with files

def Third(path_to_folder_H*, someting_else_2):
    #do something with files

def Fouth(path_to_folder_H*,something_else_3):
    #do someething with files

# -- main -- 

One()
folders=glob.glob(path_to_folder_H*)

for folder in folders:

    my_file=glob.glob(file.fastqs)
    Two(path_to_folder_H*,something_else)

    my_file=glob.glob(file.fa)
    Third(path_to_folder_H*,something_else_2)

    my_file=glob.glob(file.xml)
    Fourth(path_to_folder_H*,something_else_3)

问题标题似乎与内容不匹配。你到底想做什么?回答标题:。但我想,你想做点别的吗?你完全正确。这是我想问的另一个问题,但我找到了解决办法。我要改变它。谢谢你让我知道。所以有了更新的标题,你所要做的就是移动一些代码。在顶部定义功能,将当前跨越3个
for
循环的代码复制/粘贴到文件夹中的单个
for文件夹中。你试过这个吗?你的拦截器是什么?你有错误吗?我添加了一些解释来说明。希望有帮助。好吧,我明白他们应该一个接一个地被处决。那么为什么不在这个答案中使用第三个代码部分呢?P.Siehr,我尝试了你的建议,这很好,但我的_文件下面有一些“if and else”。我已经更新了指导代码,并理解了我所说的内容。@Ana说实话,我看不出有任何问题。您能提供一个错误消息吗?我收到的错误消息是关于第二个my_文件与缩进不匹配。所以我必须检查脚本,看看问题所在。它必须是大约一个空格的缩进。但是我同意你的观点,你的示例代码应该是有效的。