无法复制压缩文件

时间:2016-10-31 09:32:17

标签: python python-2.7

我需要使用特定名称多次复制各种文件,我想让该过程自动化。这是我的python代码:

number_of_copies = int(raw_input("enter number of copies "))

copy_number = 1

infile = raw_input("file to be copied ")
new_file = raw_input("What's the name of the new file?")
extension = ".fastq"
indata = open(infile)

file_to_copy = str(indata.read())

while copy_number < number_of_copies:

    copy = open(new_file + "-" + str(copy_number) + extension, 'w')
    copy.write(file_to_copy)
    copy_number = copy_number + 1    

indata.close()
copy.close()

在这种情况下,我知道我的文件的扩展名,所以我对其进行了硬编码,我只是在脚本中相应地更改了该变量。 该脚本可以与我的.fastq文件(基本上是文本文件)一起使用,但是一旦我在fastq.gz文件(压缩)上尝试它,副本的大小为1kb(从原始&gt; 300 Mb大小)。我认为问题在于.gz是一个压缩文件,但我不知道如何解决这个问题。任何帮助是极大的赞赏。

P.S。当然,当我尝试使用.gz文件时,我也改变了“扩展”变量。

提前谢谢!

2 个答案:

答案 0 :(得分:2)

如评论中所述,使用shutil效率更高。

由于您的操作系统对文本文件执行了newline translation,因此您收到错误。因此,要在所有文件上正确使用上述代码,您需要以二进制模式打开它们,例如

open(infile, 'rb') 

open(new_file + "-" + str(copy_number) + extension, 'wb')

以下是open的Python 2文档。 this answer有一个方便的标准文件模式表。

答案 1 :(得分:-1)

with open('recipes.tar.gz', 'r') as raw_file:
    with open('new.gz', 'w') as new_file:
        new_file.write(raw_file.read())

我认为你的问题是无法打开“.gz”扩展文件,所以我试试看,没有发生任何问题。当然,如果你的文件非常大,那将是另一个问题。