Python能否一行代码实现读写文件?

5

使用Ruby,我可以

File.open('yyy.mp4', 'w') { |f| f.write(File.read('xxx.mp4')}

我可以使用Python吗?
3个回答

19

当然可以:

with open('yyy.mp4', 'wb') as f:
    f.write(open('xxx.mp4', 'rb').read())

注意,在这里使用了二进制模式标志(b),因为你正在复制mp4内容,你不希望Python重新解释换行符。

如果xxx.mp4很大,那么这将占用大量内存。可以尝试使用shutil.copyfile 函数来获得更节省内存的选项:

import shutil

shutil.copyfile('xxx.mp4', 'yyy.mp4') 

4
你可能想将 f.write 移到和 with open(...) 同一行,这样它们就都在“同一行”上了 :^) - mgilson
1
哎呀,别逼我现在给你打印一份PEP-8的输出了。用100pt字体,在A3纸上单面打印! - Martijn Pieters
4
打开一个文件进行写操作会创建该文件。 - Martijn Pieters
使用with open('yyy.txt', 'wb') as f, open('xxx.txt', 'rb') as g:然后f.write(g.read())会不会更加简洁一些呢? - martineau
那不是一行代码。 - marsh
显示剩余3条评论

2

0
你想复制一个文件,不要手动读取和写入字节,使用文件复制函数通常在这种简单情况下更好和更有效。
如果你想要一个真正的一行代码,你可以用分号替换换行符:
import shutil; shutil.copyfile("xxx.mp4","yyy.mp4")

避免这种情况! 我曾经为了加速一个与 Python 完全无关的极特殊的情况而这样做过,但由于在我的 python -c "Put ️ code here" 命令行中存在换行符以及 Meson 处理它的方式。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接