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:\User\Anderson\Documents
- Mac和Linux:就是/
- 例:/User/Anderson
- windows:从C盘、D盘等开始
- 相对路径
- 比如程序运行在e:\test\文件夹下
- 这个文件夹里还有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 = '第一行内容\n第二行内容\n'
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自动化办公视频全集!!!