gpt4 book ai didi

python - 我会通过二进制复制损坏文本文件吗?

转载 作者:太空宇宙 更新时间:2023-11-04 07:38:05 26 4
gpt4 key购买 nike

我想复制文件名中包含错误字符的文件/目录树(当然是递归地)。因此,我打开文件,读取其内容,然后将它们转储到一个名称经过清理的新文件中。

如果文件的内容是文本,并且我在二进制模式下将它们读()到写()中,是否有可能损坏内容?

for name in os.listdir(src_path):
name = clean_name(name)
src_full = os.sep.join((src_path, name))
dst_full = os.sep.join((dst_path, name))
...
if isfile(src_full):
with open(dst_full, 'xb'): as dst_file:
with open(src_full, 'rb')) as src_file:
dst_file.write(src_file.read())

最佳答案

不会,不会损坏内容。只要您的硬件可以为您提供准确的内容,您就会一点一点地按原样阅读准确的内容。

可能发生的是您忘记复制所有文件元数据;例如,访问控制信息以及修改和创建日期丢失。

与其将整个文件读入内存,不如使用 shutil.copyfile() function为您处理文件副本;它将以 block 为单位复制数据。更好的是,使用 shutil.copy()shutil.copy2()功能,它也会跨权限复制; copy2() 还复制文件访问和创建时间。

这三个函数都以二进制模式打开文件;源用'rb'打开,目标用'wb'打开。如果您必须独占打开(模式'xb'),您将需要自己打开文件对象(就像您已经做的那样)并使用shutil.copyfileobj()。获得有效的文件副本,然后是 shutil.copymode() call (复制 shutil.copy() 和复制文件权限)或 shutil.copystat() call (复制 shutil.copy2() 的作用)。

关于python - 我会通过二进制复制损坏文本文件吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29537451/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com