Python 自动化常用操作及glob使用大全

 更新时间:2021年08月26日 16:01:52   作者:Py_Silence  
这篇文章主要介绍了Python 自动化常用操作,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下

本文摘自微信公众号 GitPython:十个 Python 自动化常用操作。如有侵权,联系必删。

1. OS模块

导入:import os

1. 遍历文件夹

批量操作的前提就是对文件夹进行遍历os.walk遍历文件夹后产生三个参数:

  • 当前文件夹路径
  • 包含文件夹的名称(列表形式)
  • 包含文件名称(列表形式)

代码如下(按需求更改目标路径即可):

for dirpath, dirnames, filenames in os.walk(r'C:\\Program Files (x86)'):
    print(f'打开文件夹{dirpath}')  # 当前文件夹路径
    if dirnames:
        print(dirnames)  # 包含文件夹名称(列表形式)
    if filenames:
        print(filenames)  # 包含文件名称(列表形式)
    print('-' * 10)

# 输出结果:
打开文件夹C:\\Program Files (x86)
['360', 'BirdWallpaper', 'Common Files', 'erl5.9.3.1', 'InstallShield Installation Information', 'Intel', 'Internet Explorer', 'IQIYI Video', 'Java', 'Kingsoft', 'Microsoft Office', 'Microsoft.NET', 'MSBuild', 'NetSarang', 'NVIDIA Corporation', 'Reference Assemblies', 'Sangfor', 'Sinfor', 'SogouInput', 'svnfile', 'Tencent', 'UltraEdit', 'VMware', 'Windows Defender', 'Windows Mail', 'Windows Media Player', 'Windows Multimedia Platform', 'Windows NT', 'Windows Photo Viewer', 'Windows Portable Devices', 'Windows Sidebar', 'WindowsPowerShell', 'Youdao']
['desktop.ini', '微软常用运行库合集_2019.07.20_X64.exe']
----------
打开文件夹C:\\Program Files (x86)\360
['360bizhi', '360Safe', '360SD']

2. 目标路径是否是文件

给定一个目标路径path,通过一行代码判断该路径是文件夹还是文件夹路径,使用os.path.isfile(path),返回TrueFalse

path = r'C:\Users\Administrator\Desktop\doc\note.md'
print(os.path.isfile(path))  # True
path = 'xxx'
print(os.path.isfile(path))  # False

3. 获取路径中的文件名

os模块方式os.path.basename可以直接从绝对路径中获取最后的文件名

path = r'C:\Users\Administrator\Desktop\doc\note.md'
print(os.path.basename(path))
print(path.split('\\')[-1])
# note.md

切割字符串方式path.split('\\')[-1]

path = r'C:\Users\Administrator\Desktop\doc\note.md'
print(path.split('\\')[-1])
# note.md

4. 创建文件夹

创建文件夹的代码非常常用,因为往往生成的新文件都希望有个新的文件夹存储。

dirpath = 'xxx'
os.mkdir(dirpath)
# 这样会在该`py`文件同一目录下生成名为`xxx`的文件夹

但如果存在同名文件夹会报错FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'xxx',为了避免报错可在创建前先判断是否存在:

dirpath = 'xxx'
if not os.path.exists(dirpath):
    os.mkdir(dirpath)

5. 获取桌面路径

  • 获取桌面路径非常常用,可使用os.path.join(os.path.expanduser("~"), 'Desktop')获取桌面的绝对路径
  • 好处:把数据放到桌面上,在不同的电脑上都能调用代码对数据进行处理。
  • 如果是在一台电脑上把桌面路径固定在字符串中,则换一台电脑就必须修改桌面路径
desktop_path = os.path.join(os.path.expanduser("~"), 'Desktop')
print(desktop_path)
# C:\Users\Administrator\Desktop

封装成一个函数进行调用

def get_desktop_path():
    return os.path.join(os.path.expanduser("~"), 'Desktop')

6. 重命名文件/文件夹 使用os.rename()方法

os.rename('xxx', 'xxx2')  # 重命名文件夹
os.rename('test.txt', 'test2.txt')  # 重命名文件

7. 批处理文件 - 1

除了os.walk外,在非遍历各级文件夹时,还可用os.scandir()获取指定路径的全部或符合条件的文件,使用for循环,获取循环变量的namepath

path = '.'
for file in os.scandir(path):
    print(file.name, file.path)

# 输出结果:
aaa .\aaa
os模块.py .\os模块.py
test2.txt .\test2.txt
xxx2 .\xxx2
# 如果path是绝对路径,下边打印出来的也是绝对路径

8. 批处理文件 - 2

获取指定路径的全部或符合条件的文件第二种方法使用os.listdir()获取文件名:

path = r'F:\python\python-basic\tips\自动化常用操作'
for file in os.listdir(path):
    print(file)

# 输出结果:
aaa
os模块.py
test2.txt
xxx2

2. shutil模块

9. 移动文件/文件夹(并重命名) shutil常用于 移动文件/文件夹,使用shutil.move()方法:

import shutil

# 把当前目录下的shutil_test.txt文件移动到当前目录的bbb文件夹下
shutil.move(r'.\shutil_test.txt', r'.\bbb/')

# 把当前目录下的shutil_test2.txt文件移动到当前目录bbb文件夹下,并重命名为shutil_test22.txt
shutil.move(r'.\shutil_test2.txt', r'.\bbb/shutil_test22.txt')

3. globa模块

10. 批处理文件 - 3

  • golb模块最重要的功能是搜索获取同一级或各子级下符合条件的文件(绝对路径),非常适合写批处理的代码。
  • 对大量文件进行相同操作,在写完针对一份文件的操作后,只需加上几行代码就可以完成批处理全部文件的工作
  • 参数*表示任意字符长度;**/*表示用通配符指代给定路径下的任何一层;recursiveTrue表示允许遍历搜索,默认为False
import glob

for file in glob.glob('**/*', recursive=True):
    print(file)

# 输出结果:
aaa
bbb
glob模块.py
os模块.py
shutil模块.py
test2.txt
xxx2
bbb\shutil_test.txt
bbb\shutil_test22.txt

glob可获取指定路径下文件的绝对路径,也可接受 通配符 搜索,拓宽了灵活程度。

glob的几种用法

  • glob 最重要的功能是 搜索获取同一级或各子级下符合条件的文件(绝对路径)
  • 导入:import glob
  • demo1:获取当前目录下所有文件和文件夹及其文件
for file in glob.glob('**/*', recursive=True):
    print(file)

# 输出结果:
aaa
bbb
glob模块.py
os模块.py
shutil模块.py
test2.txt
xxx2
bbb\shutil_test.txt
bbb\shutil_test22.txt
bbb\w
bbb\w\aaaa.txt
bbb\w\s
bbb\w\s\i.txt

demo2:获取当前目录bbb下的文件及其一层子文件

for file in glob.glob('./bbb/*'):
    print(file)

# 输出结果:
./bbb\shutil_test.txt
./bbb\shutil_test22.txt
./bbb\w

demo3:获取当前目录bbb下所有文件和文件夹及其文件

for file in glob.glob('./bbb/**', recursive=True):
    print(file)

# 输出结果:
./bbb\
./bbb\shutil_test.txt
./bbb\shutil_test22.txt
./bbb\w
./bbb\w\aaaa.txt
./bbb\w\s
./bbb\w\s\i.txt

demo4:获取当前目录bbb下嵌套两层内的文件和文件夹

for file in glob.glob('./bbb' + '/*/*'):
    print(file)

# 输出结果:
./bbb\w\aaaa.txt
./bbb\w\s

demo5:遍历包含指定名称的文件和文件夹

import os

arm_path = glob.glob(os.path.join('./bbb', '*.txt'))
print(arm_path)
# 输出结果:
['./bbb\\shutil_test.txt', './bbb\\shutil_test22.txt']

到此这篇关于Python 自动化常用操作的文章就介绍到这了,更多相关Python 自动化内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Python设计模式之桥接模式原理与用法实例分析

    Python设计模式之桥接模式原理与用法实例分析

    这篇文章主要介绍了Python设计模式之桥接模式原理与用法,结合具体实例形式分析了Python桥接模式的相关概念、原理、定义及使用方法,需要的朋友可以参考下
    2019-01-01
  • Windows安装Anaconda并且配置国内镜像的详细教程

    Windows安装Anaconda并且配置国内镜像的详细教程

    我们在学习 Python 的时候需要不同的 Python 版本,关系到电脑环境变量配置换来换去很是麻烦,所以这个时候我们需要一个虚拟的 Python 环境变量,这篇文章主要介绍了Windows安装Anaconda并且配置国内镜像教程,需要的朋友可以参考下
    2023-01-01
  • Python内置函数——__import__ 的使用方法

    Python内置函数——__import__ 的使用方法

    本篇文章主要介绍了Python内置函数——__import__ 的使用方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-11-11
  • 详解python中各种文件打开模式

    详解python中各种文件打开模式

    在python中,总的来说有三种大的模式打开文件,分别是:a, w, r,这篇文章主要介绍了python中各种文件打开模式,需要的朋友可以参考下
    2020-01-01
  • 详细介绍Python语言中的按位运算符

    详细介绍Python语言中的按位运算符

    这篇文章主要介绍了Python语言中的按位运算符,有需要的朋友可以参考一下
    2013-11-11
  • python 如何在list中找Topk的数值和索引

    python 如何在list中找Topk的数值和索引

    这篇文章主要介绍了python 如何在list中找Topk的数值和索引的操作,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • 基于Python编写微信清理工具的示例代码

    基于Python编写微信清理工具的示例代码

    这篇文章主要和大家分享一个用Python语言编写的微信清理小工具的示例代码,而且该工具不会删除文字的聊天记录,感兴趣的可以了解一下
    2022-05-05
  • Python中的配对函数zip()解读

    Python中的配对函数zip()解读

    这篇文章主要介绍了Python中的配对函数zip()解读,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-11-11
  • Pytorch实现LSTM案例总结学习

    Pytorch实现LSTM案例总结学习

    这篇文章主要介绍了Pytorch实现LSTM案例总结学习,文章通过构建网络层、前向传播forward()展开主题介绍,需要的小伙吧可以参考一下
    2022-07-07
  • Python常用模块logging——日志输出功能(示例代码)

    Python常用模块logging——日志输出功能(示例代码)

    logging模块是Python的内置模块,主要用于输出运行日志,可以灵活配置输出日志的各项信息。这篇文章主要介绍了Python常用模块logging——日志输出的实例代码,需要的朋友可以参考下
    2019-11-11

最新评论