zoukankan      html  css  js  c++  java
  • 1-自动化管理电脑文件及文件夹

    1-自动化管理电脑文件及文件夹

    一、输出目录下所有文件及文件夹

    1、获取当前运行目录

    import os
    print(os.getcwd())
    

    2、关于路径中的斜杠(/)和反斜杠()

    - windows中采用反斜杠()作为文件夹之间的分隔符
    - Mac和Linux中采用斜杠(/)作为文件夹之间的分隔符
    
    - 反斜杠在Python中用于转义,所以变成两个反斜杠(\)
    

    3、路径拼接

    import os
    print(os.path.join('MyProjects','AI'))
    
    - windows输出:'MyProjects\AI'
    - Mac/Linux输出:'MyProjects/AI'
    

    4、绝对路径和相对路径

    • 绝对路径
      • windows:从C盘、D盘等开始
        • 例:C:UserAndersonDocuments
      • Mac和Linux:就是/
        • 例:/User/Anderson
    • 相对路径
      • 比如程序运行在e: est文件夹下
      • 这个文件夹里还有run的文件夹
      • 那么run文件夹的相对路径就是./run

    5、列出当前程序文件夹下的所有文件和文件夹

    import os
    print(os.listdir())
    
    import os
    for item in os.listdir():
        print(item)
    
    # 指定绝对路径
    import os
    print(os.listdir('e:\MyProjects\'))
    
    # 判断路径是文件还是文件夹
    # 文件返回false;文件夹返回true
    import os
    files = os.listdir()
    for file in files:
        print(file,os.path.isdir(file))
    
    # 判断路径是文件还是文件夹
    # 文件返回false;文件夹返回true
    import os
    for file in os.scandir():
        # name:文件名 path文件路径 
        # is_dir():判断是否为文件夹的方法
        print(file.name,file.path,file.is_dir())
    

    二、遍历、搜索文件及查询文件信息

    1、遍历文件夹

    # os.listdir()只能列举当前文件夹下的文件及文件夹
    # 如果想要将子孙文件夹的列表也展示出来,想要以下方法
    import os
    # dirpath:文件夹路径;dirnames:dirpath下的子文件夹列表;files是dirpath的文件列表
    for dirpath,dirnames,files in os.walk('./'):
        #  以 f 开头,包含的{}表达式在程序运行时会被表达式的值代替
        print(f'发现文件夹:{dirpath}')
        print(files)
    

    三、搜索、匹配文件名称

    1、利用字符串内置的方法

    # 字符串A.startswith(字符串B):字符串A是否以字符串B开头
    # 以下打印true
    print('abc.txt'.startswith('ab'))
    # 字符串A.endswith(字符串B):字符串A是否以字符串B结尾
    # 以下打印true
    print('abc.txt'.endswith('.txt'))
    

    2、glob模块

    ①普通所有

    import glob
    # *表示任意字符.*.py表示匹配(任意字符).py文件。
    # ?表示一个字符.test?.py表示匹配 test(某一个字符).py文件。
    # 详情学习正则表达式
    print(glob.glob('*.py'))
    print(glob.glob('test?.py'))
    

    ②向下搜索很多层文件

    import glob
    # **:表示任意层文件或文件夹
    # recursive=True会不断进入文件夹内
    print(glob.glob('**/*.txt',recursive=True))
    

    3、fnmatch模块

    import fnmatch
    # 第一个参数的文件名 是否能匹配第二个参数。能:True;不能:False
    print(fnmatch.fnmatch('lession1.py','le*1.py')
    print(fnmatch.fnmatch('lession1.py','le*[0-9].py')
    

    4、查询文件信息

    import os
    for file in os.scandir():
        print(file.stat())
        
    # 文件信息属性
    # st-size:文件的体积大小(单位:bytes),除以1024就是KB
    
    # 以下时间都是时间戳形式,需要进行时间格式转化
    # st_atime:文件的最近访问时间
    # st_mtime:文件的最近修改时间
    # st_ctime:Windows下表示创建时间
    # st_birthtime:只在Mac、Linux下可用,表示创建时间
    

    5、时间格式转化

    import time
    print(time.ctime(time)) # 英文格式时间
    
    import datetime
    # 1567764428为时间戳
    that_time = datetime.datetime.fromtimestamp(1567764428)
    print(type(that_time)) # 查看所属类 datetime.datetime
    print(that_time) # 2019-09-06 18:07:08
    print(that_time.hour,that_time.minute,that_time.second) # 时 分 秒
    

    6、单独查询指定文件

    import os
    print(os.stat('lession1.py'))
    

    四、创建临时文件及文件夹

    1、利用python读取内容

    # open():打开文件 'r':读取文件 encoding='utf-8':以utf-8编码读取
    f = open('file1.txt','r',encoding='utf-8')
    text = f.readlines()
    print(text)
    f.close()
    

    建议写法

    # 简单理解:不管程序是否正常运行都会关闭文件,不需要再单独写close()
    with open('file1.txt','r',encoding='utf-8') as f:
        text = f.readlines()
        print(text)
    

    2、利用python写入内容

    # 'w':表示写入文件。无文件:创建;有文件:文件内容会被清空。
    # 'a':表示写入文件。无文件:创建;有文件:追加内容
    with open('file2.txt','w',encoding='utf-8') as f:
        text = '第一行内容
    第二行内容
    '
        f.write(text)
        f.write('第三行内容')
    

    3、创建临时文件储存数据

    from tempfile import TemporaryFile
    
    f = TemporaryFile('w+') # 'w+':表示写入及读取文件
    f.write('Hello')	
    f.seek(0) # .seek(0):表示(光标)回到文件开头位置
    data = f.readlines() # f.readlines()读取内容是从光标后开始读取。所以需要上一步把光标放在开头位置
    print(data)
    f.close()
    # 程序运行后会自动删除临时文件
    

    建议写法

    from tempfile import TemporaryFile
    with TemporaryFile('w+') as f:
        f = TemporaryFile('w+')
    	f.write('Hello')
    	f.seek(0)
    	data = f.readlines()
    	print(data)
    

    4、创建临时文件夹

    from tempfile import TemporaryDirectory
    with TemporaryDirectory() as tmp_folder:
        print(f'临时文件夹已创建:{tmp_folder}')
    # 程序运行后会自动删除临时文件
    

    5、补充

    使用with...as...形式。一定要在代码块中完成代码。否则程序会出现异常。

    五、批量创建、复制、移动、删除、重命名文件及文件夹

    1、创建文件夹

    import os
    # 当存在同名文件夹时会报错。需先判断下是否存在同名文件。
    if not os.path.exists('新文件夹'):
        os.mkdir('新文件夹')
    

    2、创建多层文件夹

    import os
    # 最里层的文件夹存在则会报错
    os.makedirs('新文件夹1/新文件夹2/新文件夹3')
    

    3、复制文件

    import shutil
    shutil.copy('file1.txt','./新文件夹/') # 将file1.txt复制到当前目录的'新文件夹'下
    shutil.copy('file1.txt','./新文件夹/new_file.txt') # 将file1.txt复制到当前目录的'新文件夹'下并重命名为'new_file.txt'
    

    4、复制文件夹

    import shutil
    shutil.copytree('文件夹','新文件夹')
    # 注意
    # 1、会将文件夹内所有文件和文件夹都复制过去
    # 2、新文件夹不能已经存在
    

    5、移动文件或文件夹

    import shutil
    shutil.move('file1.txt','file/file11.txt')
    shutil.move('file12.txt','file/')
    shutil.move('文件夹','新文件夹/')
    # 注意
    # 1、第二个参数写某个文件夹位置,则移动到该文件夹下
    # 2、第二个参数写某个文件路径,则移动这个路径并且重命名
    # 如果是文件夹记住最后加上斜杠/
    

    6、重命名文件或文件夹

    import os
    os.rename('文件夹','新文件夹')
    os.rename('file.txt','file1.txt')
    

    7、删除文件

    import os
    os.remove('file.txt')
    # 注意:只能删除文件,放入文件夹路径则报错
    

    8、删除文件夹

    import shutil
    shutil.rmtree('文件夹')
    

    六、创建和解压压缩包(zip)

    1、读取压缩包

    import zipfile
    with zipfile.ZipFile('压缩包.zip','r') as zipobj:
        print(zipobj.namelist())
    

    2、处理压缩包中的中文

    import zipfile
    with zipfile.ZipFile('压缩包.zip','r') as zipobj:
        for file_name in zipobj.namelist():
            print(file_name.encode('cp437').decode('gbk'))
    

    3、读取压缩包内文件信息

    import zipfile
    with zipfile.ZipFile('压缩包.zip','r') as zipobj:
        for file_name in zipobj.namelist():
            info = zipobj.getinfo(file_name)
            file_name = file_name.encode('cp437').decode('gbk')
            # file_size:文件大小 compress_size:压缩后大小
            print(file_name,info.file_size,info.compress_size)
    

    4、解压压缩包

    import zipfile
    with zipfile.ZipFile('压缩包.zip','r') as zipobj:
        zipobj.extract('file1.txt') # 第二个参数可以不写,默认为当前位置
    

    5、提取所有文件

    import zipfile
    with zipfile.ZipFile('压缩包.zip','r') as zipobj:
        zipobj.extractall()
        zipobj.extractall(path='./文件夹/')
        zipobj.extractall(path='./文件夹/',pwd=b'password')
    

    6、创建压缩包

    import zipfile
    file_list = ['1.py','1.py','2.py','3.py']
    with zipfile.ZipFile('压缩包.zip','w') as zipobj:
        for file in file_list:
            zipobj.write(file)
    

    7、向已有压缩包添加文件

    import zipfile
    with zipfile.ZipFile('压缩包.zip','a') as zipobj:
        zipobj.write('file.txt')
    

    该内容学习自 Python自动化办公视频全集!!!

  • 相关阅读:
    多测师讲解app测试 _app原理图解_高级讲师肖sir
    多测师讲解 app_模拟器的端口号_高级讲师肖sir
    多测师讲解appium _开启注意点_高级讲师肖sir
    多测师讲解app _xpath插件_高级讲师肖sir
    多测师讲app测试 _appium实战(1)_高级讲师肖sir
    多测师讲解app测试 _ADB常用的指令_高级讲师肖sir
    jmeter分布式测试
    常用命令
    Linux安装pycharm
    请求头信息介绍
  • 原文地址:https://www.cnblogs.com/luckyzs/p/13381714.html
Copyright © 2011-2022 走看看