我需要使用特定名称多次复制各种文件,我想让该过程自动化。这是我的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文件时,我也改变了“扩展”变量。
提前谢谢!
答案 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”扩展文件,所以我试试看,没有发生任何问题。当然,如果你的文件非常大,那将是另一个问题。