码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2020-07-26 23:21:24      阅读:132      评论:0      收藏:0      [点我收藏+]

标签:compress   open   读取内容   多层   http   run   完成   创建   正则表达   

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
  • 相对路径
    • 比如程序运行在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自动化办公视频全集!!!

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

标签:compress   open   读取内容   多层   http   run   完成   创建   正则表达   

原文地址:https://www.cnblogs.com/luckyzs/p/13381714.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!