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

到此这篇关于python基础学习之组织文件的文章就介绍到这了,更多相关python组织文件内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • python基础之文件处理知识总结

    一.open()方法 python open()方法用于打开一个文件,并返回文件对象,在对文件处理的过程中都需要用到这个函数,如果文件无法打开,会抛出OSError. 注意:使用open()方法的时候一定到保证关闭文件对象,文件里面的内容才会被保存,关闭文件需要调用close()方法. open()方法常用的形式是接收两个参数:文件名(file)和模式(mode) 基本语法: open(file,mode='r') 完整的语法: open(file,mode='r',buffering=1,en

  • python可视化hdf5文件的操作

    对于一些复杂的hdf5文件,通过可视化的方法可以比较容易的了解文件的内部结构,下面介绍基于python的一个hdf5文件的安装使用方法 1 安装vitables工具包 命令 pip install vitables 2 安装完成后在终端中使用命令 vitables 文件名.hdf5 最终实现hdf5文件的可视化,方便直观就像一层层打开文件夹一样 补充:python对于HDF5的操作 看代码吧~ import h5py #导入工具包 import numpy as np #HDF5的写入: img

  • python使用glob检索文件的操作

    一.检索当前目录下所有文件.文件夹 from glob import glob glob('./*') Output: ['./0a.wav', './aaa', './1b.wav', './1a.wav', './0b.wav'] #返回一个list 二.检索当前目录下指定后缀名文件 假设我们需要获取当前文件夹下所有后缀名为".wav"的文件, from glob import glob glob('./*.wav') Output: ['./0a.wav', './1b.wav'

  • Python 如何读取.txt,.md等文本文件

    看代码吧~ # example.md 1 2 3 4 5 6 7 8 9 >>> with open('example.md') as f: lines = f.readlines() >>> lines ['1 2 3\n', '4 5 6\n', '7 8 9\n'] # 我们发现每一行后面都会有一个回车符,我们使用strip()函数消除它 >>> lines = [i.strip() for i in lines] ['1 2 3', '4 5

  • python3 hdf5文件 遍历代码

    看代码吧~ import h5py import numpy as np f = h5py.File('train/e1_1.hdf5') key = "" for k in f.keys(): key = k d = f[key] print(d) a = np.ones(d.shape) d.read_direct(a) print(a) f.close() 补充:HDF5 文件及Python模块之h5py HDF5文件 什么是HDF5文件呢? 先引用一波维基百科的介绍,『层级数据

  • python引入其他文件夹下的py文件具体方法

    红色方框要引入箭头里面的 import sys sys.path.append('../../config/') from database import * print(MYSQL_CONFIG) 内容扩展: Python的import包含文件功能就跟PHP的include类似,但更确切的说应该更像是PHP中的require,因为Python里的import只要目标不存在就报错程序无法往下执行.要包含目录里的文件,PHP中只需要给对路径就OK.Python中则不同 a.py 要 import

  • python提取word文件中的所有图片

    前言 办公中,偶尔会碰到一种情况,需要提取word文档中的图片,决定写这样一款工具自动提取图片. 关于脚本的使用: 情景1:如果你拿到的是一个文件夹,所有的word文件都在这个文件夹的子目录下,深度为1层,你可以直接使用该脚本 情景2:如果你拿到的是一个文件夹,打开之后,里面杂乱无章的充斥着各种文件,你也不确定word文档都在哪,那么你需要使用Everything来手动提取出所有的word文档,虽然我也可以让脚本实现这个功能,但是使用脚本需要考虑到有可能存在同名文件,再处理起来代码量会更大,还是

  • 用python删除文件夹中的重复图片(图片去重)

    第一部分:判断两张图片是否相同 要查找重复的图片,必然绕不开判断两张图片是否相同.判断两张图片简单呀!图片可以看成数组,比较两个数组是否相等不就行了.但是这样做太过简单粗暴,因为两个数组的每个元素都要一一比较,效率很低.为了尽量避免两个庞大的数组比较: 先进行两张图片的大小(byte)比较,若大小不相同,则两张图片不相同: 在两张图片的大小相同的前提下,进行两张图片的尺寸(长和宽)比较,若尺寸不相同,则两张不相同: 在两张图片的尺寸相同的前提下,进行两张图片的内容(即数组元素)比较,若内容不相同

  • Python文件名的匹配之clob库

    一.前言 既然在Pathlib库中提到了glob()函数,那么我们就专门用一篇内容讲解文件名的匹配.其实我们有专门的一个文件名匹配库就叫:glob. 不过,glob库的API非常小,但是仅仅应用于文件名的匹配绰绰有余.只要是在实际的项目中需要过滤,或者匹配一组文件,都可以使用该库进行操作. 二.通配符 星号(*) 话不多说,下面我们使用通配符来匹配文件名,示例如下: import glob for name in sorted(glob.glob('text/*')): print(name)

  • 教你利用Python破解ZIP或RAR文件密码

    一.破解原理 其实原理很简单,一句话概括就是「大力出奇迹」,Python 有两个压缩文件库:zipfile 和 rarfile,这两个库提供的解压缩方法 extractall()可以指定密码,这样的话首先生成一个密码字典(手动或用程序),然后依次尝试其中的密码,如果能够正常解压缩表示密码正确. 二.实验环境 本文采取的虚拟环境为 Pipenv. 库 zipfile:Python 标准库,使用时直接导入即可 rarfile:Python 第三方库 利用 Pipenv 安装 rarfile pipe

  • 将Python代码打包成.exe可执行文件的完整步骤

    前言 有时候我们需要将自己写的代码打包成exe文件,给别人使用需要怎么办呢?以下将讲解Python代码如何打包成.exe文件. 1. 下载pyinstaller PyInstaller是一个十分有用的第三方库,它能够在Windows.Linux. Mac OS X 等操作系统下将 Python 源文件打包,通过对源文件打包, Python 程序可以在没有安装 Python 的环境中运行,也可以作为一个 独立文件方便传递和管理. 因为Python中有很多三方包,我们想要这些三方包也包含在里面就需要

  • Python文件基本操作实用指南

    文件的存储方式 在计算机中,文件是以 二进制的方式保存在磁盘上的 文本文件和二进制文件 文本文件 可以使用文本编辑软件查看 本质上还是二进制文件 二进制文件 保存的内容 不是给人直接阅读的,而是提供给其她软件使用的 二进制文件不能使用 文件编辑软件 查看 文件基本操作 操作文件的套路 在计算机 中要操作文件一共包含三个步骤: 1.打开文件 2.读.写文件 读 将文件内容读入内容 写 将内存内容写入文件 3.关闭文件 操作文件的函数/方法 序号 函数/方法 说明 1 open 打开文件,并且返回文

  • 教你用Python代码实现合并excel文件

    一.安装模块 1.找到对应的模块 http://www.python-excel.org/ 2.用 pip install 安装 pip3 install xlrd pip3 install XlsxWriter 因为使用的是 python3,所以安装的时候采用 pip3. 二.XlsxWriter 示例 先看看简单的演示: import xlsxwriter # 创建一个工作簿并添加一个工作表 workbook = xlsxwriter.Workbook("c.xlsx") work

  • Python爬虫之m3u8文件里提取小视频的正确姿势

    前言   在网上爬取的小视频(.ts格式)打不开怎么搞?使用IDM下载有时候还会出现数据受法律保护,IDM无法下载该内容,如何解决?这篇博客就来聊聊如何正确提取m3u8文件里的.ts视频,并合成完整的.mp4格式视频. 1. HLS协议与m3u8文件   HLS,即 H T T P   L i v e   S t r e a m i n g HTTP\ Live\ Streaming HTTP Live Streaming的缩写,是由苹果公司提出基于HTTP的流媒体网络传输协议.是苹果公司Qui

  • python 如何把classification_report输出到csv文件

    今天想把classification_report的统计结果输出到文件中,我这里分享一下一个简洁的方式: 我的pandas版本: pandas 1.0.3 代码: from sklearn.metrics import classification_report report = classification_report(y_test, y_pred, output_dict=True) df = pd.DataFrame(report).transpose() df.to_csv("resu

  • 解决python中os.system调用exe文件的问题

    前一段时间导师叫我写一个批处理的小程序,就是循环修改辐射传输模型软件MODTRAN的输入参数,然后运行MODTRAN软件进行计算,输出 需要的结果.我这里用的是python写的小程序,那就需要考虑用python调用MODTRAN的exe文件运行,查了一些资料可以用os.system命令来 执行exe文件,说起来直接调用就行了嘛,对吧,但是说起来简单,还是会遇到一些莫名其妙的问题,下面我来说说我遇到的问题. 先给大家介绍一下MODTRAN这个软件运行的一个过程. 这个软件里的东西如下图所示: 简单

  • Python关于OS文件目录处理的实例分享

    Python----OS 文件目录处理 import os import time # 获取当前文件的绝对路径 dir_1 = os.path.abspath(__file__) # D:\workspace\web-test\Study\Day_5-16\tset3.py # 获取当前文件所在目录的上级路径 dir_2 = os.getcwd() # D:\workspace\web-test\Study\Day_5-16 dir_3_1 = os.path.dirname(dir_1) #

  • Python基础之元组与文件知识总结

    大纲 Python文件类型及汇总 一.元组 1 特征 1.任意对象的有序集合 2.通过下标访问 3.不可变 4.长度固定,任意类型,任意嵌套 >>> t = (1,2,3,4,5) >>> t[0] = 2 Traceback (most recent call last): File "<stdin>", line 1, in <module> TypeError: 'tuple' object does not suppo

随机推荐