使用文件中的样本名称列表从目录中复制

时间:2017-02-09 20:26:46

标签: python bash

我有一个由行分隔的文件中的样本名称列表,例如:

sample1
sample2 
sample3

我需要以某种方式将文件从计算机上的另一个目录复制到我的目录中以获取此文件列表 例如cp /path/to/file/sample1.fasta /path/to/my_directory对于样本名称文件中的每一行(路径和文件类型总是相同的,因此对于样本2,它将是cp /path/to/file/sample2.fasta /path/to/my/directory

有人可以帮忙吗?我有数千个样本,所以我很想找到一个编码解决方案!

2 个答案:

答案 0 :(得分:1)

read循环中使用while命令:

targetdir=/path/to/my/directory

while read -r file; do
    cp "$file" "$targetdir/"
done < files.txt

答案 1 :(得分:0)

我支持janos的回答 但是既然你用python标记了这个问题 我想提供解决方案。

解析

samples = open("/path/to/sample/file", "r").readlines()

这将为您提供样本的名称列表。

复制

要复制文件,您可以使用shutil

import shutil
trailer = ".fasta"
for sampleName in samples:
    shutil.copy2("/path/to/file/sampleName" + trailer, "/path/to/destination/")

来自shutil文档:

  

shutil模块对文件和文件集合提供了许多高级操作。

使用shutil.copy2,您可以复制包含其元数据的文件 如权限,最后修改时间等 注意无法复制文件所有者和组。

如果您不想使用外部库和代码
您可以简单地使用读/写I / O函数并从源写入dest