组织文件

shutil模块

shutil模块中包含一些函数,提供复制、移动、改名和删除文件的功能。要使用shutil的函数,首先需要import shutil。

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

shutil.copy()将复制一个文件,shutil.copytree()将复制整个文件夹,以及它包含的文件夹和文件。shutil.copytree()函数返回一个字符串,是新复制的文件夹的路径。

>>> import shutil,os
>>> os.chdir(‘/tmp/‘)
>>> shutil.copy(‘./1.txt‘,‘/tmp/newdir/‘)
‘/tmp/newdir/1.txt‘
>>> shutil.copy(‘./1.txt‘,‘/tmp/newdir/2.txt‘)
‘/tmp/newdir/2.txt‘

>>> import os,shutil
>>> shutil.copytree(‘/tmp/newdir‘,‘/usr/local/newdir_backup‘)
‘/usr/local/newdir_backup‘

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

如果找不到destination的文件夹,python会假定destination指的是一个文件,而非文件夹。

构成目的地的文件夹必须已经存在,否则python会抛出异常。

>>> import shutil
>>> shutil.move(‘/usr/local/newdir_backup‘,‘/tmp/newdir/‘)
‘/tmp/newdir/newdir_backup‘

利用os模块中的函数,可以删除一个文件或一个空文件夹。但利用shutil模块,可以删除一个文件夹及其所有的内容。

☉用os.unlink(path)将删除path处的文件。

☉调用os.rmdir(path)将删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹。

☉调用shutil.rmtree(path)将删除path处的文件夹,它包含的所有文件和文件夹都会被删除。

在程序中使用这些函数时,可以在第一次运行程序时,注释掉这些调用,并且加上print()调用,显示会被删除的文件。

import os
for filename in os.listdir():
     if filename.endswitch(‘.rxt‘):
    	 #os.uplink(filename)
    	 print(filename)

使用内建的shutil.rmtree()函数不可恢复地删除文件和文件夹,所以用起来可能有危险。

删除文件和文件夹的更好方法,是使用第三方的send2trash模块。

它将文件夹和文件发送到计算机的垃圾箱或回收站,而不是永久删除它们。

一般来说,总是应该使用send2trash.send2trash()函数来删除文件和文件夹。

这种方式,不像永久删除文件,不会释放磁盘空间。

send2trash()函数只能将文件送到垃圾箱,不能从中恢复文件。

[[email protected] newdir]# pip install send2trash
Collecting send2trash
  Downloading Send2Trash-1.3.0.tar.gz
Building wheels for collected packages: send2trash
  Running setup.py bdist_wheel for send2trash ... done
  Stored in directory: /root/.cache/pip/wheels/15/76/b3/a81bb5d0bfc6157d1e5df52d34cbea6ffe8a0fc6fea83bddb0
Successfully built send2trash
Installing collected packages: send2trash
Successfully installed send2trash-1.3.0
>>> import send2trash
>>> newFile=open(‘/tmp/new.txt‘,‘a‘)
>>> newFile.write(‘Hello World!‘)
>>> newFile.close()
>>> send2trash.send2trash(‘/tmp/new.txt‘)

遍历目录树

os.walk()函数被传入一个字符串值,即一个文件夹的路径。

可以在一个for循环语句中使用os.walk()函数,遍历目录树,就像使用range()函数遍历一个范围的数字一样。

▎不像range(),os.walk()在循环的每次迭代中,返回3个值:

1、当前文件夹名称的字符串。

2、当前文件夹中子文件夹的字符串的列表。

3、当前文件夹中文件的字符串的列表。

所谓的当前文件夹,是指for循环当前迭代的文件夹。程序的当前工作目录,不会因为os.walk()而改变。

>>> import os
>>> for dir,subdirs,files in os.walk(‘/tmp/‘):
...     print(‘dir: ‘+dir)
...     for subdir in subdirs:
...             print(‘subdir: ‘+subdir)
...     for file in files:
...             print(‘file: ‘+file)
...     print(‘‘)
...
dir: /tmp/
subdir: .font-unix
subdir: .X11-unix
subdir: .ICE-unix
subdir: .Test-unix
......

zipfile模块

将多个文件打包成一个文件,这个文件叫做“归档文件”。

要创建一个ZipFile对象,就调用zipfile.ZipFile()函数,向它传入一个字符串,表示.zip文件的文件名。

zipfile是python模块的名称,ZipFile()是函数的名称。

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

>>> import zipfile,os
>>> zipFile=zipfile.ZipFile(‘/tmp/new.zip‘)
>>> zipFile.namelist()
[‘tmp/newdir/1.txt‘]
>>> zipInfo=zipFile.getinfo(‘tmp/newdir/1.txt‘)
>>> zipInfo.file_size
1100
>>> zipInfo.compress_size
482
>>> zipFile.close()

ZipFile对象的extractall()方法从ZIP文件中解压缩所有文件和文件夹,放到当前工作目录中。

如果传递给extractall()方法的文件夹不存在,它会被创建。

extract()方法可以从ZIP文件中解压缩单个文件。

传递给extract()的字符串,必须匹配namelist()返回的字符串列表中的一个。

可以向extract()传递第二个参数,将文件解压缩到指定的文件夹,而不是当前工作目录。

如果第二个参数指定的文件夹不存在,python就会创建它。

extract()的返回值是被压缩后文件的绝对路径。

>>> import os,zipfile
>>> extractZip=zipfile.ZipFile(‘/tmp/new.zip‘)
>>> extractZip.extractall()
>>> extractZip.close()

如果向ZipFile对象的write()方法传入一个路径,python就会压缩该路径所指的文件,将它加入ZIP文件中。

write()方法的第一个参数是一个字符串,代表要添加的文件名。第二个参数是“压缩类型”参数,可以总是设置为“zipfile.ZIP_DEFLATED”。

就像写入文件一样,写模式将擦除ZIP文件中所有原有的内容。如果需要添加,使用“a”作为第二个参数。

>>> import zipfile,os
>>> newZip=zipfile.ZipFile(‘/tmp/new.zip‘,‘w‘)
>>> newZip.write(‘/tmp/newdir/1.txt‘,compress_type=zipfile.ZIP_DEFLATED)
>>> newZip.close()
时间: 2024-08-24 13:58:18

组织文件的相关文章

Python 编程快速上手 第九章 组织文件

上一章节,主要讲了如何用 Python 进行创建并写入新文件.这一章节,讲了对如何用 Python 对文件进行进一步的操作,包括: 移动,复制,删除文件 改名 压缩文件 [shutil]移动,复制,删除文件: 模块:shutil 模块的一些函数,具有复制,移动,删除文件的.shutil 指的是 shell untility( shell 工具)复制文件和文件夹:shutil.copy(source,destination) [shutil]文件和文件夹的移动 移动:shutil.move(sou

angularJs项目实战!01:模块划分和目录组织

近日来我有幸主导了一个典型的web app开发.该项目从产品层次来说是个典型的CRUD应用,故而我毫不犹豫地采用了grunt + boilerplate + angularjs + bootstrap + D3 + requirejs 的架构来实现它.angularjs早在去年6月份我就有所接触,将它应用在实验室项目的个别页面中,11月份在新浪的时候也将其推荐给了所在云事业部项目组.项目组老大程辉等人都是很有技术敏感性的人,大胆地采纳了我的建议,将之应用于原本使用dojo开发的项目前端模块上.然

linux文件层级、目录、文件基本操作介绍

1.文件层级FHS介绍: Filesystem Hierarchy Standard(文件系统层次化标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件. FHS定义了系统中每个区域的用途.所需要的最小构成的文件和目录,同时还给出了例外处理与矛盾处理. /:linux文件系统根目录 /bin:供所有用户使用的基本命令文件 /sbin:供系统管理员使用的工具程序文件 /lib:供/bin和/sbin程序调用的库文件程序,及系

第 10 章 文件和异常

至此,我们掌握了编写组织有序而易于使用的程序所需的基本技能,该考虑让程序目标更明确,用途更大了.在本章中,我们将学习处理文件,让程序能够快速地分析大量的数据:我们将学习错误处理,避免程序在面对意外情形时崩溃:我们将学习异常,它们是Python创建的特殊对象,用于管理程序运行时出现的错误:我们还将学习模块json,它让我们能够保存用户数据,以免在程序停止运行后丢失. 学习处理文件和保存数据可以让我们的程序使用起来更容易:用户将能够选择输入什么样的数据,以及在什么时候输入:用户使用我们的程序做一些工

python之文件对象

防伪码忘情公子著 文件对象是用来访问文件系统接口所对应的数据的 文件系统是OS用于明确磁盘或分区上的文件的方法和数据结构-即在磁盘上组织文件的方法 计算机文件或称文件.电脑档案.档案是存储在某种长期储存设备或临时存储设备中的一段数据流并且归属于计算机文件系统管理之下 概括来讲 文件是计算机中由OS管理的具有名字的存储区域 在Linux系统上文件被看做是字节序列 要想把数据存储到文件中有一个前提那就是必须序列化非序列化的数据是不能简单的存储在文件系统中的文件中的 对于python来说文件对象不仅可

netty4 实现一个断点上传大文件功能

我本来以为文件断点续传功能很简单,不就是提供2个方法: 一个返回已经上传的文件的长度:另外一个负责上传文件呗(请求带上content-range 指明本次上传的内容在整个文件中的位置),然后根据请求提供的位置写呗,太简单了. 但是实际情况还是比较复杂的,关键问题是,上面的描述现在想想只能称作为文件分段上传,而不是断点续传. 断点意味着网络会断,然后断了之后,服务端根本获取不到本次上传的内容,于是下次又只能从头开始传文件.一种解决办法是客户端将文件分成很小的片段(单个片段丢了就整个片段重传),这个

tomcat 目录文件夹作用(转)

(一):目录结构 tomcat的目录结构如下:  目录名 简介  bin 存放启动和关闭tomcat脚本  conf 包含不同的配置文件,server.xml(Tomcat的主要配置文件)和web.xml  work 存放jsp编译后产生的class文件  webapp 存放应用程序示例,以后你要部署的应用程序也要放到此目录  .在(包)WEB-INF/src中写的.java文件会被自动编译成.class文件后转存到WEB-INF文件夹下的classes文件夹下.logs 存放日志文件  lib

什么是FHS,Linux的文件系统目录标准是怎样的

Filesystem Hierarchy Standard(文件系统目录标准)的缩写,多数Linux版本采用这种文件组织形式,类似于Windows操作系统中c盘的文件目录,FHS采用树形结构组织文件.实际上FHS仅是规范在根目录(/)下面各个主要目录应该放什么样的文件. FHS定义了两层规范,第一层是, / 下面的各个目录应该要放什么文件数据,例如/etc应该要放置设置文件,/bin与/sbin则应该要放置可执行文件等等.因为Linux的开发人员实在太多了,如果每个人都使用自己的目录配置方法,那

Linux 磁盘管理 基础篇--创建基本文件分区

1 概述 本文通过对讲解了磁盘的基本概念,分区,创建文件系统,挂载,卸载等步骤进行讲解.使得用户能够创建基本的磁盘并挂载使用空间. 2 磁盘基本概念 2.1 磁盘空间 每个扇区大小是512byte,这是磁盘的最小单位 每一个磁道上有多少个扇区就是扇区数 sectors 每一圈叫做磁道(track),最外面的叫做0磁道 依次往里增加,最里面的磁道数最大 每个盘有两个面,都有两个磁头(head)读取数据 相同的磁道组成的叫做柱面(cylinder),同样最外面叫0柱面,最里面柱面数最大 因此, 每个