python基础学习之组织文件

作者:shenmingik 时间:2022-04-08 21:47:23 

一、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")

结果:

python基础学习之组织文件

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")

结果:

python基础学习之组织文件

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")

结果:

python基础学习之组织文件

二、遍历文件

  • 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)

结果:

python基础学习之组织文件

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()

结果:

python基础学习之组织文件

四、参考文献


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

来源:https://blog.csdn.net/shenmingxueIT/article/details/117076242

标签:python,组织文件
0
投稿

猜你喜欢

  • python中resample函数实现重采样和降采样代码

    2022-10-24 05:49:23
  • 学习ASP.NET八天入门:第一天

    2007-08-07 13:08:00
  • 无法通过Google网站管理工具验证的部分情况解决办法

    2009-07-28 12:56:00
  • 浅谈Python xlwings 读取Excel文件的正确姿势

    2021-10-15 23:33:36
  • 浅谈pytorch、cuda、python的版本对齐问题

    2022-12-03 13:04:54
  • ubuntu下简单配置mysql数据库

    2009-07-31 09:17:00
  • Python标准库之time库的使用教程详解

    2023-07-25 05:25:57
  • 9个个人网站制作诀窍

    2007-12-13 11:36:00
  • python opencv图片编码为h264文件的实例

    2023-01-12 13:22:07
  • Python OpenCV招商银行信用卡卡号识别的方法

    2022-01-16 06:31:30
  • 超级连接的title提示中如何换行实现多行显示

    2008-03-07 15:57:00
  • Python3中小括号()、中括号[]、花括号{}的区别详解

    2022-05-31 09:20:36
  • 解决python3.6用cx_Oracle库连接Oracle的问题

    2023-06-12 02:38:46
  • 在SAE上部署Python的Django框架的一些问题汇总

    2023-12-17 19:08:25
  • PHP PDOStatement::fetch讲解

    2023-06-04 20:06:02
  • python 实现在txt指定行追加文本的方法

    2021-09-08 22:14:40
  • python基于搜索引擎实现文章查重功能

    2022-01-21 19:25:50
  • 教你使用pyqt实现桌面歌词功能

    2021-04-22 16:11:04
  • OpenCV目标检测Meanshif和Camshift算法解析

    2022-06-15 21:30:35
  • setInterval 和 setTimeout 会产生内存溢出

    2008-03-08 13:10:00
  • asp之家 网络编程 m.aspxhome.com