首页 > 编程语言 >Python脚本学习——文件处理

Python脚本学习——文件处理

时间:2023-11-04 10:34:46浏览次数:41  
标签:脚本 文件 Python file path shutil os 目录

一、模糊查找文件

import os
path = r"F:\Typora"
files = os.listdir(path)

for i in files:
    # 查找文件中含有某个字符串的文件并确定文件类型(也就是后缀)
    if 'Typora' in i and i.endswith('.exe'):
        print(i)

Python脚本学习——文件处理_shutil模块

二、文件自动归类

注意当使用的是绝对路径时,需要对文件和路径进行连接操作

p = os.path.join(path, file)  # 连接目录

import os
import shutil

path = r"C:\Users\PC\Desktop\C\资料"
files = os.listdir(path)

for file in files:
    p = os.path.join(path, file)  # 连接目录
    if os.path.isfile(p):  # 判断是否为文件
        folder_name = path + "\\" + file.split(".")[-1]  # 获取后缀名作为文件名
        # 如果不存在该文件后缀名的文件夹
        if not os.path.exists(folder_name):
            # 先创建文件夹
            os.makedirs(folder_name)
            shutil.move(p, folder_name)
        else:
            shutil.move(p, folder_name)

实现效果:

Python脚本学习——文件处理_os模块_02

Python脚本学习——文件处理_os模块_03

Python脚本学习——文件处理_Pytho文件处理_04

三、自动解压并删除压缩包

创建/删除 文件/文件夹 都要结合具体情况,注意路径,否则会报错

若解压后出现中文乱码问题→保姆级教学之解决Windows系统下shutil zipfile解压缩中文乱码问题_进击no猪排的技术博客_51CTO博客

import os
import shutil
path = r'./test'

# 1. 先判断是否为压缩文件
def isZip():
    files = os.listdir(path)
    for file in files:
        if file.endswith(".zip"):
            return file

# 2. 将目标文件解压到指定位置
def unZip(file):
    # 先创建存储解压文件的文件夹(以原压缩包的名字为例)
    folder_name = path + r'/' + file.split(".")[0]
    os.makedirs(folder_name)
    p = os.path.join(path, file)
    shutil.unpack_archive(p, folder_name)

# 3. 删除压缩包
def deleteZip(file):
    p = path + r'/' + file
    os.remove(p)

while(True):
    zip = isZip()
    unZip(zip)
    deleteZip(zip)

实现效果:

解压前 -->  Python脚本学习——文件处理_Pytho文件处理_05

解压后 -->  Python脚本学习——文件处理_Pytho文件处理_06


四、os模块常用操作

  1. os.getcwd( ) 查看当前路径
a = os.getcwd()
print(a)
  1. os.chdir( ) 切换到指定路径
path = "F:/"
os.chdir(path)
print(os.getcwd())
  1. os.listdir( ) 获取指定路径目录下的所有文件名(但不包括孙目录,只返回同级目录下的)
b = os.listdir(path=".")
print(b)
  1. os.path.isdir( ) 判断当前对象是否为目录
  2. os.path.isfile( ) 判断当前对象是否为文件
  3. os.path.join( ) 通常用于连接路径和文件名
os.path.join(root, item)
  1. os.path.exists( ) 判断当前文件/路径是否存在
path = "."
os.path.exists(path)
  1. os.makedirs( ) 创建多级目录
# 在当前目录下创建
os.makedirs(r"temp/qq/wx") # 或者是 os.makedirs(r"./temp/qq/wx")
# 在上一级目录下创建
os.makedirs(r"../temp/qq/wx")
mkidr()只能用于创建一级目录,例如:
创建目录 
C:\Users\Administrator\Desktop\python_base\amo\qq1\wx1\amo1,
C:\Users\Administrator\Desktop\python_base\amo\qq1\wx1必须是存在的
  1. os.removedirs( ) 删除多级目录(整个目录都删除,且最后一级目录必须为空)
os.removedirs(r"./temp/qq/wx")
# rmdir() 删除空目录 (只删除路径最后的目录)
(使用 rmdir() 方法只能删除空的目录,
# 如果想要删除非空的目录,
则需要使用 Python 内置的标准模块 shutil 的 rmtree() 方法实现。)


  1. os.remove( ) 删除文件(使用方法同删除目录)
  2. os.rename( ) / renames( ) 重命名
os.rename("../temp666/test.py","../temp666/ans.py") # 也可以是目录
  1. os.walk( ) 遍历目录树
tuples = os.walk('./')  # 遍历当前目录
for root, dirs, files in tuples:  # 通过for循环打印遍历结果
    print('文件目录:', root)  # 打印文件目录
    print('子目录:', dirs if dirs else '无')  # 打印子目录
    print('文件:', files if files else '无')  # 打印文件
# 函数walk内有可选参数topdown,用于指定遍历的顺序。
# 如果值为True,表示自上而下遍历(即先遍历根目录);
# 如果值为 False,表示自下而上遍历(即先遍历最后一级子目录)。默认值为 True。
  1. os.path.split( ) 用于分割路径和文件名(如果完全使用目录,它也会将最后一个目录作为文件名分离,且不会判断文件或者目录是否存在)
  2. os.path.splitext( ) 用于分割文件名和扩展名。二者都是以元组的形式返回
for file in os.listdir():
    print(os.path.split(file))
filename = []
for file in os.listdir():
    print(os.path.splitext(file))
    filename.append(os.path.splitext(file)[0])
print(filename)

五、shutil模块常用操作

  1. shutil.copyfile( ) 拷贝文件
import shutil
with open("test1.txt","w", encoding="utf-8") as f1:
    f1.write("chbjejhwebc")
# 参数1是被复制的源文件,参数2为复印件,且目标文件无需存在可以直接被创建
shutil.copyfile("test1.txt", "test1copy.txt")

# 还有copyfileobj(), copymode(), copytree()等,这里只简单介绍了一种
  1. shutil.movefile( ) 移动文件到指定路径
# 第一个参数为要移动的文件,第二参数为移动到指定路径
shutil.move("../demo2.txt", r"./shutil")
  1. shutil.unpack_archive( ) 解压文件
shutil.unpack_archive("压缩包", "解压到指定路径")
  1. shutil.make_archive( ) 压缩文件
shutil.make_archive("压缩到指定路径", "压缩格式如,zip、7", "待压缩的文件/文件夹")

标签:脚本,文件,Python,file,path,shutil,os,目录
From: https://blog.51cto.com/goku0623/8179615

相关文章

  • 什么是 Windows 操作系统 DLL 文件的 Side-by-Side Assemblies 技术
    .dll文件是Windows操作系统中的一种重要文件类型。全名为“动态链接库”(DynamicLinkLibraries),它包含了一些可以由多个程序共享的代码和数据。这使得在Windows下的开发者可以将一些公共的功能和数据集中到一些.dll文件中,而这些功能和数据可以被任何需要的程序所调用和使用......
  • python毕业设计选题15例,马上要毕业啦,大家做好准备了没
    Hi,大家好,大四的同学马上要开始毕业设计啦,大家做好准备了没!学长给大家详细整理了最新的python计算机毕设相关选题,对选题有任何疑问,都可以问学长哦.1.网上商城系统这是一个基于python+vue开发的商城网站,模仿京东购物模式,平台采用B/S结构,后端采用主流的Python语言进行开发,前端......
  • sed 原地替换文件时遇到的趣事
    哈喽大家好,我是咸鱼在文章《三剑客之sed》中咸鱼向大家介绍了文本三剑客中的sedsed全名叫streameditor,流编辑器,用程序的方式来编辑文本那么今天咸鱼打算讲一下我在用sed原地替换文件时遇到的趣事sed让文件属性变了?有这么一个普通文件test.txt,内容如下:[root@loca......
  • python 字符串格式化
    Python字符串的格式化分为两种:1)%方式  2)str.format() 方式。str.format()是比%较新的方式,大多数的Python代码仍然使用%操作符。但最终会被str.format()代替,推荐使用str.format()==============================================================================......
  • python——基础学习篇(3)
    【列表的加法和乘法】加法:s=[1,2,3], t=[4,5,6,], s+t=[1,2,3,4,5,6]乘法:s×3=重复三次【嵌套列表(二维列表)】matrix=[]直接应用访问嵌套循环(可用循环):is (同一性运算符)——字符串不变,列表可变 copy:y=x.copy() ——列表的一个copy方法,  y=copy.copy(列表,字......
  • python——基础学习篇(6)
    【字典】关键符号:{} 创建字典:1.直接使用大括号冒号的方法 2. 使用dict函数使用列表作用元素,每个元素又用元组包裹增:fromkeys(iterable[,  values]) :suchas:——d=dict.fromkeys("fish",250)——{“f”:250,“i”:250,“s”:250 ,“h”:250......
  • python——基础学习篇(5)
    【拆分和拼接】partition(从左往右找分割符)——rpartition(从右往左)split(sep=none,maxsplit=-1)——可把分割为一个一个·jion(iterable)——尽量用jion少用加法【格式化字符串的方法】format使用{}替换字段align:"<"左对齐(默认)   “>” 右对齐 ......
  • python——基础学习篇(4)
    【字符串】大小写字母换来换去:capitalize:首字母大写(其他小写)                   casefold:返回所有的字母都是小写的字符串                   title:字符串每个单词的首字母变成大写单词其他字......
  • python——基础学习篇(1)
    divmod(3,2)——(1,1)地板除布尔类型ture/flaseflase情况很少{none和flase,值为0的数字类型(0,0.0,0j),空集和空序列(){},}fraction(0,1)分子为0,分母为1 (1=true,0=flase)ture-flase=1逻辑运算and:得满足左右都是ture        or:只需要一个为true        no......
  • 废弃主机安装ubuntu开samba文件夹共享给小米摄像机监控NAS存储
    安装sshsudoapt-getinstallopenssh-serversudosystemctlenable--nowsshsudoapt-getinstallnet-toolsubuntu安装sambasudoaptupdatesudoaptupgradesudoapt-getinstallsambamkdir/sharesudochmod777/share-Rsudocp/etc/samba/smb.conf/etc/samba......