在Windows下使用Python复制文件

6 投票
1 回答
1509 浏览
提问于 2025-04-16 01:21

我在用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')来做到这一点。

撰写回答