使用Python进行文件和目录操作

在上一教程中 ,我讨论了如何读取,打开,关闭和写入文件。 在本教程中,我将进一步讨论可以对文件和目录(文件夹)执行的不同操作。

您知道,例如,我们经常使用文件,而处理文件不仅仅只是打开和关闭文件。 您还记得您复制了该特定文件多少次吗? 哦,还是当您重命名从某个网站下载的文件时,因为该文件的名称没有意义? 这些是我将在本教程中讨论的一些操作类型。

准备? 接下来,让我们开始使用Python,对我们的文件和目录做一些有趣的事情!

关闭

shutil (Shell Utilities)是我们将在本教程中用来执行不同文件和目录操作的模块的名称。 shutil已经随您的Python安装一起提供,因此您无需手动安装它。 为了使用此模块,您需要做的就是import模块:

import shutil

复制文件

让我们从第一个操作开始,即复制文件 。 为此,我们将使用shutil模块中的copy()函数。 在本教程的示例中,我将使用sample.pdf文件。 您可以随意下载此文件或使用任何喜欢的文件。

以下简单脚本将向您展示如何将sample.pdf从桌面(最初位于该位置)复制到另一个目录Temp ,该目录也位于桌面上:

import shutil
shutil.copy('sample.pdf', 'Temp')

注意,我只列出了文件名和目录名,因为我在使用终端作为桌面时使用的是我的终端。 您可以改为指定要复制的文件和要将文件复制到的目录的完整路径,在我的情况下如下所示:

shutil.copy('/Users/Abder/Desktop/sample.pdf', '/Users/Abder/Desktop/Temp')

继续,打开Temp目录或您指定的任何目录,您应该在其中找到复制的文件!

如果第二个参数是文件而不是目录怎么办? 换句话说,假设您键入了以下内容(假设文件和文件都在桌面上,则删除了文件的完整路径):

import shutil
shutil.copy('sample.pdf', 'file.pdf')

在这种情况下,您将拥有一个新文件file.pdf ,它是原始文件sample.pdf的副本。 因此,如果您打开file.pdf ,您会发现它具有相同的内容,因为它实际上是sample.pdf的副本。

来源和目的地可以相同吗? 让我们尝试看看。

shutil.copy('sample.pdf', 'sample.pdf'

似乎此操作将给我们带来一个错误,因为文件名不应该相同:

Traceback (most recent call last):
  File "test.py", line 2, in <module>
    shutil.copy('sample.pdf', 'sample.pdf')
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 119, in copy
    copyfile(src, dst)
  File "/usr/local/Cellar/python/2.7.10_2/Frameworks/Python.framework/Versions/2.7/lib/python2.7/shutil.py", line 69, in copyfile
    raise Error("`%s` and `%s` are the same file" % (src, dst))
shutil.Error: `sample.pdf` and `sample.pdf` are the same file

复制目录

在本节中,我们将看到如何复制整个目录(文件夹)而不是单个文件,如上一节所述。

假设我们要复制以下目录结构。 也就是说,我们有一个主目录Original ,其中包含目录Original-1 ,其中包含目录Original-2 ,并且包含目录Original-3 ,在Original-3我们具有文件Sample.pdf (phew。 ..)。

在Python中复制目录的可视化效果

现在,我们要做的就是将Original目录及其所有内容复制到一个新目录,然后将该新目录称为Original-Copy

可以使用copytree()函数简单地完成此操作,如下所示(假设一切都在桌面上发生):

import shutil
shutil.copytree('Original', 'Original-Copy')

现在你应该找一个新的目录Original-Copy与所有的内容和结构Original

移动文件

移动文件就像对文件进行剪切粘贴操作一样。 在“ 复制文件”部分中,我们了解了如何制作文件副本,同时将原始文件保留在其原始位置。

在本节中,我们将看到如何将文件移动(剪切)到新位置,同时将其从其原始位置删除。 只需使用move()函数即可执行此操作,如下所示:

import shutil
shutil.move('Sample.pdf', 'Temp')

请注意, Sample.pdf已移动到目录Temp ,并且在桌面上不再存在。

如果我们将Sample.pdf移至新文件 New-Sample.pdf ,该怎么办?

import shutil
shutil.move('Sample.pdf', 'New-Sample.pdf')

在这种情况下,您将仅拥有New-Sample.pdf内容相同的New-Sample.pdf Sample.pdf ,但Sample.pdf不再存在。

移动目录

使用我们在“ 移动文件”部分中使用的相同功能,即move()来执行移动目录。 让我们使用与“ 复制目录”部分中相同的示例,但是现在使用move()函数。

import shutil
shutil.move('Original', 'Original-Copy')

在这种情况下,您将拥有一个新目录Original-Copy ,其内容与Original相同,但Original不再存在。

重命名文件和目录

你猜怎么了? 您还可以使用move()函数来重命名文件或目录。 在本节中,我将不再重复这些示例。 但是,如果您在上述文件和目录上同时使用move()函数时注意到,我们提到原始文件/目录不再存在,但是存在具有相同内容的新文件/目录。 这就像重命名文件/目录,不是吗?

删除文件和目录

似乎shutil模块不包含删除文件的功能。 但是,它确实包含删除目录的功能: rmtree() 。 请注意,因为删除是永久性的,因此您不会在垃圾箱中找到已删除的目录。

以下示例说明了如何永久删除Original-Copy目录:

import shutil
shutil.rmtree('Original-Copy')

如果要永久删除文件 ,可以使用Python的os模块中的remove()函数,如下所示:

import os
os.remove('Sample.pdf')

结论

如您所见,我们能够通过shutilos模块非常轻松地对文件和目录执行重要的操作-复制,移动,重命名和删除。 您可以查阅这些模块的文档,以获取有关如何使用它们的更多信息。

翻译自: https://code.tutsplus.com/tutorials/file-and-directory-operations-using-python--cms-25817

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值