在python中对BED/Interval文件中的每一行进行相同的更改

在python中对BED/Interval文件中的每一行进行相同的更改,python,inline-editing,genome,Python,Inline Editing,Genome,我有一个床位间隔文件,我正试图使用Galaxy online工具处理它。目前,文件中的每一行都以一个代表染色体编号的数字开头。为了正确上传,我需要每一行以chr开头,然后是数字。例如,以2L开头的行,我需要更改,使它们以chr2L开头,并对以数字开头的每一行执行相同的操作,不仅仅是2L,还有许多不同的数字。我在想,如果我可以在每一行的开头添加一个chr,而不影响其他列,那就太好了,但是我不知道如何在python中实现这一点 你能帮帮我吗 谢谢 第一步打开文件 file = open("som

我有一个床位间隔文件,我正试图使用Galaxy online工具处理它。目前,文件中的每一行都以一个代表染色体编号的数字开头。为了正确上传,我需要每一行以chr开头,然后是数字。例如,以2L开头的行,我需要更改,使它们以chr2L开头,并对以数字开头的每一行执行相同的操作,不仅仅是2L,还有许多不同的数字。我在想,如果我可以在每一行的开头添加一个chr,而不影响其他列,那就太好了,但是我不知道如何在python中实现这一点 你能帮帮我吗

谢谢

第一步打开文件

  file = open("somefile.txt")
第二步,排队

  lines = list(file.readlines())
  file.close()
第3步使用列表理解

   new_lines = ["chr"+line for line in lines]
步骤4将新行写回文件

   with open("somefile.txt","w") as f:
       f.writelines(new_lines)
为了不在内存中存储所有行

   file1 = open("some.txt")
   file2 = open("output.txt","w")

   for line in file1:
       print >> file2, "chr"+ line

   file1.close()
   file2.close()
然后只需将output.txt复制到原始文件名

第一步打开文件

  file = open("somefile.txt")
第二步,排队

  lines = list(file.readlines())
  file.close()
第3步使用列表理解

   new_lines = ["chr"+line for line in lines]
步骤4将新行写回文件

   with open("somefile.txt","w") as f:
       f.writelines(new_lines)
为了不在内存中存储所有行

   file1 = open("some.txt")
   file2 = open("output.txt","w")

   for line in file1:
       print >> file2, "chr"+ line

   file1.close()
   file2.close()
然后只需将output.txt复制到原始文件名


您是否必须使用python而不是针对此类任务而设计的sed、awk或perl?例如perl-pi-E's/^/chr/'inputfile.bde您是否必须使用python而不是sed、awk或perl,哪些是为这类任务设计的?例如perl-pi-E's/^/chr/'inputfile.bde这是否需要Python同时在内存中保存所有新的或旧的行?我猜这确实需要对旧的行执行此操作。或者您可以写入另一个文件,然后在最后只复制原始文件。。。但是如果你想写同一个文件,你需要把所有的行都读到memoryAh,对。我忽略了您正在回写同一个文件的事实。这是否需要Python同时在内存中保存所有新的或旧的行?我猜这确实需要对旧的行执行此操作。或者您可以写入另一个文件,然后在最后只复制原始文件。。。但是如果你想写同一个文件,你需要把所有的行都读到memoryAh,对。我错过了你写回同一个文件的事实。