首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

用Python复制文件的九种编制

以下是演示“若安在Python中复制文件”的九种编制。

shutil copyfile()编制

shutil copy()编制

shutil copyfileobj()编制

shutil copy2()编制

os popen编制

os体系()编制

Thread()编制

子历程挪用()编制

子历程check_output()编制

1. Shutil Copyfile()编制

该编制只需在方针可写时才将源的内容复制到目的地。若是您没有写入权限,则会激发IOError。

它经由过程翻开输入文件停止阅读,忽略其文件类型。接下来,它不会对不凡文件停止任何不合的措置,也不会将它们复制为新的不凡文件。

所述的CopyFile()编制把持较低级别的功能的copyfileobj()的下方。它将文件名称作为参数,翻开它们并将文件句柄通报给copyfileobj()。该编制中有一个可选的第三个参数,您可以使用它来指定缓冲区长度。然后它将翻开文件以读取指定缓冲区巨细的块。可是,默认举动是一次性读取整个文件。

以下是有关copyfile()编制的要点。

它将源的内容复制到名为方针的文件。

若是目的地不成写,则复制把持将导致IOError非常。

若是源文件和方针文件都不异,它将前往SameFileError。

可是,若是目的地以不合的名称事后存在,则副本将笼盖其内容。

若是目的地是目录,则意味着此编制将不会复制到目录,将会产生错误13。

它不支撑复制文件,如字符或块设备和管道。

2. Shutil Copy()编制

copy()编制的功能近似于“CP”在Unix呼吁。这意味着若是方针是一个文件夹,那么它将在其中建树一个与源文件不异的名称(basename)的新文件。别的,该编制将复制其内容后将方针文件的权限与源停止同步。 若是要复制不异的文件,它也会抛出SameFileError。

3. Shutil Copyfileobj()编制

此编制将文件复制到方针途径或文件工具。若是方针是文件工具,则必要在挪用copyfileobj()之后明晰封锁它。它假设一个可选参数(缓冲区巨细),您可以使用它来供给缓冲区长度。这是在复制过程中保留在内存中的字节数。体系使用的默认巨细为16KB。

4. Shutil Copy2()编制

可是,copy2()编制的功能近似于copy()。可是,在复制数据的同时,也可以在元数据中添加访谒和改削时辰。复制统一个文件会导致SameFileError。

对付猎奇 – Copymode()与Copystat()之间的区别。

5. Os Popen()编制

该编制建树一个指向或来自该呼吁的管道。它前往一个毗连到管道的翻开的文件工具。您可以按照文件翻开形式(即’r’(默认)或’w’)使用它停止读取或写入。

形式 –它可所以’r’(默认)或’w’。

bufsize –若是其值为0,则不会产生缓冲。若是设置为1,则在访谒文件时将停止行缓冲。若是您供给的值大于1,则缓冲将以指定的缓冲区巨细停止。可是,对付负值,体系将接纳默认缓冲区巨细。

对付Windows把持体系。

对付Linux把持体系。

6. Os System()编制

它是运转任何体系呼吁的最常见编制。使用system()编制,可以在subshell中挪用任何呼吁。在内部,这种编制会挪用标准的C库函数。

此编制前往呼吁的退出状态。

对付Windows把持体系。

对付Linux把持体系。

7.以Async编制使用线程库的Python文件复制

若是要以异步编制复制文件,请使用以下编制。在这里,我们使用Python的线程模块在后台运转复制把持。

使用此编制时,请确保接纳锁定以按捺死锁。若是您的应用轨范正在使用多个线程读取/写入文件,您可能接见会面临它。

8.使用子历程的Call()编制在Python中复制一个文件

子历程模块供给了一个简单的界面来措置子历程。它使我们可以启动子历程,附加到其输入/输出/错误管道,并检索前往值。

子流程模块旨在替代传统模块和功能,如os.system,os.spawn *,os.popen *,popen2。*。

它公开一个call()编制来挪用体系呼吁来实行用户使命。

9.使用子历程的Check_output()编制在Python中复制文件

使用子历程的check_output()编制,可以运转外部呼吁或轨范并捕捉其输出。它还支撑管道。

【免责声明】我们重在关注和分享,局部文字和图片为搜集转载,对文中报告内容和概念均保持中立,不合错误其切确性、靠得住性或完好性供给任何明示或表示的保证,因编纂必要文字和图片之间亦无必定联络,仅供读者参考。若有侵权或不实请实时联络我们,我们予以删除。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180316A1TQYH00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券