热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python基础学习之组织文件_python

今天带大家复习python基础知识,此文章将要介绍如何组织文件,既拷贝,移动等,文中有非常详细的代码示例,对正在学习python的小伙伴们很有帮助,

一、Shutil 模块

shutil其实也就是shell模块。其中包含一些函数,可以让我们在python程序中复制、移动、改名和删除文件

1.1 复制文件和文件夹

  • shutil.copy(source,destination):将路径source处的文件复制到路径destination处的文件夹。如果destination是一个文件名,那么它将作为被复制的新名字
  • shutil.copytree(source,destination):将路径source处的文件夹,包括它的所有文件和子文件夹,复制到路径destination处的文件夹。
import shutil
import os

current_path = os.getcwd()
# 拷贝test.txt 文件到temp1文件夹下
shutil.copy(current_path+"/test.txt",current_path+"/Python/temp1")
# 将temp1文件夹内容拷贝到temp2文件夹下,此时会创建temp2文件夹
shutil.copytree(current_path+"/Python/temp1",current_path+"/Python/temp2")

结果:

在这里插入图片描述

1.2 移动文件和文件夹

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


如果destination指向一个文件夹,source文件将移动到destination中,并保持原来的文件名;
如果destination指向一个文件,这个文件就会被覆盖,注意!
如果destination指向一个不存在的文件夹,这个时候source里面的内容会移动到destination,source改名为destination

import shutil
import os

current_path = os.getcwd()
# 将temp2文件夹内的文件拷贝到temp中,并将temp2改名为temp
shutil.move(current_path+"/Python/temp2",current_path+"/temp")

结果:

在这里插入图片描述

1.3 删除文件和文件夹

  • os.unlink(path):将删除path处的文件
  • os.rmdir(path):将删除path处的文件夹。该文件夹必须为空,其中没有任何文件和文件夹
  • shutil.retree(path):将删除path处的文件夹,它包含的所有文件和文件夹都会被删除
import shutil
import os

current_path = os.getcwd()
shutil.rmtree(current_path+"/temp")

结果:

在这里插入图片描述

二、遍历文件

  • os.walk(path):通过传入一个路径

os.walk()在循环的每次迭代中,返回三个值:

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

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

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

import shutil
import os

current_path = os.getcwd()
for folder_name,sub_folders,file_names in os.walk(current_path):
    print(folder_name+":")
    # 加载当前文件路径下的所有子文件
    for sub_folder in sub_folders:
        print("\t"+folder_name+": "+sub_folder+"(dir)")
    for file_name in file_names:
        print("\t"+folder_name+": "+file_name)

输出(部分):

ubuntu@VM-0-2-ubuntu:~/python_file$ /usr/bin/python3 /home/ubuntu/python_file/Python/orignize_files.py
/home/ubuntu/python_file:
        /home/ubuntu/python_file: .vscode(dir)
        /home/ubuntu/python_file: Python(dir)
        /home/ubuntu/python_file: test.cpp
        /home/ubuntu/python_file: test.txt
        /home/ubuntu/python_file: tempCodeRunnerFile.py
/home/ubuntu/python_file/.vscode:
        /home/ubuntu/python_file/.vscode: db(dir)
        /home/ubuntu/python_file/.vscode: .git(dir)
        /home/ubuntu/python_file/.vscode: log(dir)
        /home/ubuntu/python_file/.vscode: settings.json
/home/ubuntu/python_file/.vscode/db:
        /home/ubuntu/python_file/.vscode/db: cpptips.db-wal
        /home/ubuntu/python_file/.vscode/db: cpptips.db-shm
        /home/ubuntu/python_file/.vscode/db: cpptips.db
/home/ubuntu/python_file/.vscode/.git:
        /home/ubuntu/python_file/.vscode/.git: 6eb7a60f73d1a1d9bdf44f2e86d7f4cc_test.cpp
/home/ubuntu/python_file/.vscode/log:
        /home/ubuntu/python_file/.vscode/log: cpptips.server.2021-05-19.log
        /home/ubuntu/python_file/.vscode/log: cpptips.server.2021-05-16.log
        /home/ubuntu/python_file/.vscode/log: cpptips.server.2021-05-17.log
        /home/ubuntu/python_file/.vscode/log: cpptips.client.log
        /home/ubuntu/python_file/.vscode/log: cpptips.server.log
/home/ubuntu/python_file/Python:
        /home/ubuntu/python_file/Python: temp1(dir)
        /home/ubuntu/python_file/Python: .git(dir)
        /home/ubuntu/python_file/Python: README.md
        /home/ubuntu/python_file/Python: hello_world.py
        /home/ubuntu/python_file/Python: orignize_files.py
        /home/ubuntu/python_file/Python: regex.py
        /home/ubuntu/python_file/Python: file_mange.py
.........
.........
.........

三、压缩文件

利用zipfile模块中的函数,python程序可以创建和打开ZIP文件。

3.1 创建和添加ZIP文件

想要创建ZIP文件,必须用ZipFile方法创建一个ZipFile对象。ZipFile对象在概念上和File对象相似。

之后,以写模式打开这个对象。调用write()方法传入一个路径,python就会压缩该路径所指的文件,将它加到ZIP文件中。write的第一个参数是一个字符串,代表要添加的文件名。第二个参数是”压缩类型“参数,告诉计算机使用怎样的算法来压缩文件。一般来说,ZIP_DEFLATED就可以了。

import zipfile
import os

current_path = os.getcwd()
new_zip = zipfile.ZipFile("newZip","w")
new_zip.write("test.txt",compress_type=zipfile.ZIP_DEFLATED)
new_zip.write("test.cpp",compress_type=zipfile.ZIP_DEFLATED)

结果:

在这里插入图片描述

3.2 读取ZIP文件

当用ZipFile函数打开一个zip文件的时候,会返回一个ZipFile对象。之后调用这个对象的namelist()方法就可以获得zip里面的压缩文件列表。

同时这个对象还有一个getinfo()方法,通过传入一个压缩文件名,就可以获得这个文件的一些信息。

import zipfile
import os

current_path = os.getcwd()
new_zip = zipfile.ZipFile("newZip","r")
files = new_zip.namelist()

for file in files:
    info = new_zip.getinfo(file)
    print("filename: "+file)
    print("\tsize: "+str(info.file_size))
    print("\tcompress_size: "+str(info.compress_size))

输出:

ubuntu@VM-0-2-ubuntu:~/python_file$ /usr/bin/python3 /home/ubuntu/python_file/Python/orignize_files.py
filename: test.txt
        size: 26
        compress_size: 26
filename: test.cpp
        size: 30
        compress_size: 28

3.3 解压缩ZIP文件

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

import zipfile
import os

current_path = os.getcwd()
example_zip = zipfile.ZipFile("newZip","r")
# 解压
example_zip.extractall()
example_zip.close()

结果:

在这里插入图片描述

四、参考文献

AI Sweigart.Python编程快速上手——让繁琐工作自动化.人民邮电出版社.2016.07

推荐阅读
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了解决Netty拆包粘包问题的一种方法——使用特殊结束符。在通讯过程中,客户端和服务器协商定义一个特殊的分隔符号,只要没有发送分隔符号,就代表一条数据没有结束。文章还提供了服务端的示例代码。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • Nginx使用(server参数配置)
    本文介绍了Nginx的使用,重点讲解了server参数配置,包括端口号、主机名、根目录等内容。同时,还介绍了Nginx的反向代理功能。 ... [详细]
  • Linux重启网络命令实例及关机和重启示例教程
    本文介绍了Linux系统中重启网络命令的实例,以及使用不同方式关机和重启系统的示例教程。包括使用图形界面和控制台访问系统的方法,以及使用shutdown命令进行系统关机和重启的句法和用法。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • 本文介绍了RPC框架Thrift的安装环境变量配置与第一个实例,讲解了RPC的概念以及如何解决跨语言、c++客户端、web服务端、远程调用等需求。Thrift开发方便上手快,性能和稳定性也不错,适合初学者学习和使用。 ... [详细]
  • 计算机存储系统的层次结构及其优势
    本文介绍了计算机存储系统的层次结构,包括高速缓存、主存储器和辅助存储器三个层次。通过分层存储数据可以提高程序的执行效率。计算机存储系统的层次结构将各种不同存储容量、存取速度和价格的存储器有机组合成整体,形成可寻址存储空间比主存储器空间大得多的存储整体。由于辅助存储器容量大、价格低,使得整体存储系统的平均价格降低。同时,高速缓存的存取速度可以和CPU的工作速度相匹配,进一步提高程序执行效率。 ... [详细]
  • 本文介绍了Web学习历程记录中关于Tomcat的基本概念和配置。首先解释了Web静态Web资源和动态Web资源的概念,以及C/S架构和B/S架构的区别。然后介绍了常见的Web服务器,包括Weblogic、WebSphere和Tomcat。接着详细讲解了Tomcat的虚拟主机、web应用和虚拟路径映射的概念和配置过程。最后简要介绍了http协议的作用。本文内容详实,适合初学者了解Tomcat的基础知识。 ... [详细]
  • Python瓦片图下载、合并、绘图、标记的代码示例
    本文提供了Python瓦片图下载、合并、绘图、标记的代码示例,包括下载代码、多线程下载、图像处理等功能。通过参考geoserver,使用PIL、cv2、numpy、gdal、osr等库实现了瓦片图的下载、合并、绘图和标记功能。代码示例详细介绍了各个功能的实现方法,供读者参考使用。 ... [详细]
  • 利用Visual Basic开发SAP接口程序初探的方法与原理
    本文介绍了利用Visual Basic开发SAP接口程序的方法与原理,以及SAP R/3系统的特点和二次开发平台ABAP的使用。通过程序接口自动读取SAP R/3的数据表或视图,在外部进行处理和利用水晶报表等工具生成符合中国人习惯的报表样式。具体介绍了RFC调用的原理和模型,并强调本文主要不讨论SAP R/3函数的开发,而是针对使用SAP的公司的非ABAP开发人员提供了初步的接口程序开发指导。 ... [详细]
  • 本文介绍了在mac环境下使用nginx配置nodejs代理服务器的步骤,包括安装nginx、创建目录和文件、配置代理的域名和日志记录等。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
author-avatar
魏建菁雅湖
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有