热门标签 | 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

推荐阅读
  • 本文介绍了一款用于自动化部署 Linux 服务的 Bash 脚本。该脚本不仅涵盖了基本的文件复制和目录创建,还处理了系统服务的配置和启动,确保在多种 Linux 发行版上都能顺利运行。 ... [详细]
  • 本文详细介绍了Java中org.eclipse.ui.forms.widgets.ExpandableComposite类的addExpansionListener()方法,并提供了多个实际代码示例,帮助开发者更好地理解和使用该方法。这些示例来源于多个知名开源项目,具有很高的参考价值。 ... [详细]
  • 使用Vultr云服务器和Namesilo域名搭建个人网站
    本文详细介绍了如何通过Vultr云服务器和Namesilo域名搭建一个功能齐全的个人网站,包括购买、配置服务器以及绑定域名的具体步骤。文章还提供了详细的命令行操作指南,帮助读者顺利完成建站过程。 ... [详细]
  • 在现代网络环境中,两台计算机之间的文件传输需求日益增长。传统的FTP和SSH方式虽然有效,但其配置复杂、步骤繁琐,难以满足快速且安全的传输需求。本文将介绍一种基于Go语言开发的新一代文件传输工具——Croc,它不仅简化了操作流程,还提供了强大的加密和跨平台支持。 ... [详细]
  • 网络运维工程师负责确保企业IT基础设施的稳定运行,保障业务连续性和数据安全。他们需要具备多种技能,包括搭建和维护网络环境、监控系统性能、处理突发事件等。本文将探讨网络运维工程师的职业前景及其平均薪酬水平。 ... [详细]
  • 在维护公司项目时,发现按下手机的某个物理按键后会激活相应的服务,并在屏幕上模拟点击特定坐标点。本文详细介绍了如何使用ADB Shell Input命令来模拟各种输入事件,包括滑动、按键和点击等。 ... [详细]
  • 本文详细记录了在银河麒麟操作系统和龙芯架构上使用 Qt 5.15.2 进行项目打包时遇到的问题及解决方案,特别关注于 linuxdeployqt 工具的应用。 ... [详细]
  • MySQL索引详解与优化
    本文深入探讨了MySQL中的索引机制,包括索引的基本概念、优势与劣势、分类及其实现原理,并详细介绍了索引的使用场景和优化技巧。通过具体示例,帮助读者更好地理解和应用索引以提升数据库性能。 ... [详细]
  • 本文介绍如何通过SSH协议使用Xshell远程连接到Ubuntu系统。为了实现这一目标,需要确保Ubuntu系统已安装并配置好SSH服务器,并保证网络连通性。 ... [详细]
  • 微软Exchange服务器遭遇2022年版“千年虫”漏洞
    微软Exchange服务器在新年伊始遭遇了一个类似于‘千年虫’的日期处理漏洞,导致邮件传输受阻。该问题主要影响配置了FIP-FS恶意软件引擎的Exchange 2016和2019版本。 ... [详细]
  • 深入理解Redis的数据结构与对象系统
    本文详细探讨了Redis中的数据结构和对象系统的实现,包括字符串、列表、集合、哈希表和有序集合等五种核心对象类型,以及它们所使用的底层数据结构。通过分析源码和相关文献,帮助读者更好地理解Redis的设计原理。 ... [详细]
  • HBase运维工具全解析
    本文深入探讨了HBase常用的运维工具,详细介绍了每种工具的功能、使用场景及操作示例。对于HBase的开发人员和运维工程师来说,这些工具是日常管理和故障排查的重要手段。 ... [详细]
  • 尽管深度学习带来了广泛的应用前景,其训练通常需要强大的计算资源。然而,并非所有开发者都能负担得起高性能服务器或专用硬件。本文探讨了如何在有限的硬件条件下(如ARM CPU)高效运行深度神经网络,特别是通过选择合适的工具和框架来加速模型推理。 ... [详细]
  • Git管理工具SourceTree安装与使用指南
    本文详细介绍了Git管理工具SourceTree的安装、配置及团队协作方案,旨在帮助开发者更高效地进行版本控制和项目管理。 ... [详细]
  • Windows 7 64位系统下Redis的安装与PHP Redis扩展配置
    本文详细介绍了在Windows 7 64位操作系统中安装Redis以及配置PHP Redis扩展的方法,包括下载、安装和基本使用步骤。适合对Redis和PHP集成感兴趣的开发人员参考。 ... [详细]
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社区 版权所有