Python 我会通过二进制复制来损坏文本文件吗?

Python 我会通过二进制复制来损坏文本文件吗?,python,python-3.x,file-io,python-3.4,Python,Python 3.x,File Io,Python 3.4,我想递归地复制一个文件/目录树,当然这些文件名中有坏字符。所以,我打开这个文件,读取它的内容,然后将它们转储到一个新文件中,并使用一个干净的名称 如果一个文件的内容是文本,而我在二进制模式下将它们读写,有没有可能会损坏内容 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

我想递归地复制一个文件/目录树,当然这些文件名中有坏字符。所以,我打开这个文件,读取它的内容,然后将它们转储到一个新文件中,并使用一个干净的名称

如果一个文件的内容是文本,而我在二进制模式下将它们读写,有没有可能会损坏内容

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())

不,不可能损坏里面的东西。在硬件能够为您提供准确内容的范围内,您将一点一点地阅读准确内容

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

使用来处理文件副本,而不是将整个文件读入内存;它将以块的形式复制数据。更好的是,使用or函数,它也可以跨权限进行复制;copy2还复制文件访问和创建时间


所有三个函数都以二进制模式打开文件;源用“rb”打开,目标用“wb”打开。如果您必须具有独占打开模式“xb”,则您需要像以前一样打开文件对象并使用以获得有效的文件副本,然后是复制shutil.copy和复制文件权限,或者是复制shutil.copy2的操作。

否,不可能损坏内容。在硬件能够为您提供准确内容的范围内,您将一点一点地阅读准确内容

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

使用来处理文件副本,而不是将整个文件读入内存;它将以块的形式复制数据。更好的是,使用or函数,它也可以跨权限进行复制;copy2还复制文件访问和创建时间


所有三个函数都以二进制模式打开文件;源用“rb”打开,目标用“wb”打开。如果您必须使用独占打开模式“xb”,则需要像以前一样自己打开文件对象,并使用以获取有效的文件副本,然后是a以复制shutil.copy和复制文件权限,或者是a以复制shutil.copy2的功能。

我看不出为什么会这样做。什么是坏字符?文本文件是二进制文件,恰好以映射到文本编码的方式使用字节。因此,您可以毫无问题地将任何文本文件视为二进制文件,只是无法获得免费获取文本的“额外”文本,您必须自己进行解码,这也不难。@Tichodroma是其中之一,管道字符。。哪一个TSX可能会在他们的网页标题中添加内容,以使其更烦人,lolI不明白为什么会这样做。什么是坏字符?文本文件是二进制文件,恰好以映射到文本编码的方式使用字节。因此,您可以毫无问题地将任何文本文件视为二进制文件,只是无法获得免费获取文本的“额外”文本,您必须自己进行解码,这也不难。@Tichodroma是其中之一,管道字符。。哪一个TSX可能会在他们的网页标题中添加内容,使其更烦人地刮lol