您的位置:首页 > 编程语言 > Python开发

《Python 编程快速上手 — 让繁琐工作自动化》读书笔记之【第9章 组织文件】

2018-03-08 21:43 1121 查看

1.  shutil 模块

1)  复制文件和文件夹

shutil.copy(source, destination),将路径source下的文件复制到路径destination处的文件夹(source 和 destination 都是字符串)。如果 destination 是一个文件名,它将作为被复制文件的新名字。该函数返回一个字符串,表示被复制文件的路径。示例:>> import shutil, os

>>> os.chdir('C:\\')

>>> shutil.copy('C:\\spam.txt', 'C:\\delicious')

'C:\\delicious\\spam.txt'

>>> shutil.copy('eggs.txt', 'C:\\delicious\\eggs2.txt')

'C:\\delicious\\eggs2.txt'shutil.copytree(source, destination),将路径source 处的文件夹,包括它的所有文件和子文件夹,复制到路径 destination 处的文件夹。示例:>>> import shutil, os

>>> os.chdir('C:\\')

>>> shutil.copytree('C:\\bacon', 'C:\\bacon_backup')

'C:\\bacon_backup'

2)  文件和文件夹的移动与改名

shutil.move(source, destination),将路径 source 处的文件夹移动到路径destination,并返回新位置的绝对路径的字符串。示例:>>> import shutil

>>> shutil.move('C:\\bacon.txt', 'C:\\eggs')

'C:\\eggs\\bacon.txt'目的地的文件夹必须已经存在,否则 Python 会抛出异常。

3)  永久删除文件和文件夹

利用 os 模块中的函数,可以删除一个文件或一个空文件夹。但利用 shutil 模块,可以删除一个文件夹及其所有的内容。
• 用 os.unlink(path)将删除 path 处的文件。
• 调用 os.rmdir(path)将删除 path 处的文件夹。该文件夹必须为空,其中没有任
何文件和文件夹。
• 调用 shutil.rmtree(path)将删除 path 处的文件夹,它包含的所有文件和文件夹都
会被删除。

4)  用 send2trash 模块安全地删除

使用第三方的send2trash模块,可以将删除的文件或者目录发送到计算机的回收站,而不是永久删除他们。但是,send2trash()函数只能将文件送到垃圾箱,不能从中恢复文件。示例:>>> import send2trash

>>> send2trash.send2trash('G:\\test.py')

>>> print(send2trash.send2trash('G:\\test.py'))

None

2.  遍历目录树

os.walk()在循环的每次迭代中,返回 3 个值:
1.当前文件夹名称的字符串。
2.当前文件夹中子文件夹的字符串的列表。
3.当前文件夹中文件的字符串的列表。
所谓当前文件夹,是指 for 循环当前迭代的文件夹。程序的当前工作目录,不会因为 os.walk()而改变。示例;import os
for folderName, subfolders, filenames in os.walk('G:'):
    # 当前目录名称 foldername
    print('当前目录是: ' + folderName)

    #当前目录中子目录字符串列表 subfolders
    for subfolder in subfolders:
        print('当前目录 ' + folderName + ' 包含字子目录: ' + subfolder)

    #当前目录中文件的字符串列表
    for filename in filenames:
        print('当前目录  ' + folderName + ' 包含文件: '+ filename)
    print('')

3.  用 zipfile 模块压缩文件

1)  读取 ZIP 文件

要读取zip的内容,可以使用zipfile模块。使用zipfile.ZipFile()方法可以得到一个ZipFile对象。
ZipFile 对象有一个 namelist()方法,返回 ZIP 文件中包含的所有文件和文件夹的字符串的列表。
这些字符串可以传递给 ZipFile 对象的 getinfo()方法,返回一个关于特定文件的 ZipInfo 对象。ZipInfo 对象有自己的属性,诸如表示字节数的 file_size和 compress_size,它们分别表示原来文件大小和压缩后文件大小。
ZipFile 对象表示整个归档文件,而 ZipInfo 对象则保存该归档文件中每个文件的有用信息。示例:>>> import zipfile, os

>>>exampleZip = zipfile.ZipFile('G:\\example.zip')

>>> exampleZip.namelist()

['spam.txt', 'cats/', 'cats/catnames.txt', 'cats/zophie.jpg']

>>> spamInfo = exampleZip.getinfo('spam.txt')

>>> spamInfo.file_size

13908

>>> spamInfo.compress_size

3828

2)  从 ZIP 文件中解压缩

ZipFile 对象的 extractall(path)方法从 ZIP 文件中解压缩所有文件和文件夹到path路径中。如果path省略,那么就会解压到当前目录中;如果path不存在会被创建。>>> import zipfile

>>> exampleZip = zipfile.ZipFile('F:\\example.zip')

>>> exampleZip.extractall()

>>> exampleZip.close()
ZipFile 对象的 extract()方法从 ZIP 文件中解压缩单个文件。示例:>>> exampleZip.extract('spam.txt')

'C:\\spam.txt'

>>> exampleZip.extract('spam.txt','C:\\some\\new\\folders')

'C:\\some\\new\\folders\\spam.txt'

>>> exampleZip.close()

3)  创建和添加到 ZIP 文件

要创建zip文件,就必须以“写模式”打开ZipFile对象。向 ZipFile 对象的 write()方法传入一个路径,Python 就会压缩该路径所指的文件,将它加到 ZIP 文件中。write()方法的第一个参数是一个字符串,代表要添加的文件名。第二个参数是“压缩类型”参数,它告诉计算机使用怎样的算法来压缩文件。可以总是将这个值设置为 zipfile.ZIP_DEFLATED(这指定了 deflate 压缩算法,它对各种类型的数据都很有效)。示例:>>> import zipfile

>>> newZip = zipfile.ZipFile('new.zip', 'w')

>>> newZip.write('spam.txt',compress_type=zipfile.ZIP_DEFLATED)

>>> newZip.close()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  python zip
相关文章推荐