在Windows下使用Python复制文件
我在用Python脚本复制文件,代码如下:
inf,outf = open(ifn,"r"), open(ofn,"w")
outf.write(inf.read())
inf.close()
outf.close()
这段代码在OSX(还有其他一些类UNIX系统)上运行得很好,但在Windows上却不行。简单来说,read()这个函数读取的字节数远远少于实际文件的大小(大约10KB),这导致写入的输出文件被截断了。
read()方法的说明说“如果大小参数是负数或者省略,就会读取所有数据直到文件结束”,所以我本以为这段代码在任何环境下都能正常工作,毕竟Python应该能帮我处理操作系统的各种问题。
那么,这到底是怎么回事呢?现在,我转而使用shutil.copyfile,这个方法满足我的需求,而且能正常工作。我用的是Python 2.6.5。
谢谢大家。
1 个回答
3
shutil是一个更好的文件复制方法,不过在Windows系统上,你需要以二进制模式打开二进制文件。这一点很重要。你可以用open(fname, 'rb')
来做到这一点。