根据python列表中的出现位置移动文件

时间:2018-05-19 08:54:31

标签: python python-3.x

如果你有一个由fasta文件填充的文件夹,例如:

,你知道是否可以
seq1.fa
seq2.fa
seq3.fa
seq4.fa
seq5.fa
seq6.fa
seq7.fa
...
seq1000.fa

并且仅保留或移动到新文件夹中的数据帧中存在的序列,例如:

seq_names
seq1
seq3
seq8
seq89

那只用python吗?

然后新文件夹:

seq1.fa
seq3.fa
seq8.fa
seq89.fa

谢谢你的帮助:)

1 个答案:

答案 0 :(得分:3)

  • 使用os.listdir()
  • 扫描目录
  • 将文件基数与set匹配(从数据框或其他内容中提取)以进行快速查找
  • 如果匹配则移动/删除
像这样:

import os,shutil

matches = {"seq1","seq3","seq8","seq89"}
for filename in os.listdir(directory):
    if os.path.splitext(filename)[0] in matches:
       # move
       shutil.move(os.path.join(filename,directory),new_directory)
       # or just copy:
       # shutil.copy(os.path.join(filename,directory),new_directory)

只删除其他文件:

    if not os.path.splitext(filename)[0] in matches:
       # remove
       os.remove(os.path.join(filename,directory),new_directory)