【Python办公自动化】文件管理:创建、重命名、删除、复制、移动、创建临时-文件/文件夹

【Python自动化办公】文件管理

  • 1 创建
    • 1.1 os.mkdir() 创建 folder
    • 1.2 os.makedirs() 创建 folders
    • 1.3 open() 创建 file
    • 1.4 with open() as f: 创建 file
  • 2 重命名
    • 2.1 os.rename() 重命名 file/folder
  • 3 删除
    • 3.1 os.remove() 删除 file
    • 3.2 shutil.rmtree() 删除 folder
  • 4 复制
    • 4.1 shutil.copy() 复制 file
    • 4.2 shutil.copytree() 复制 folder
  • 5 移动
    • 5.1 shutil.move() 移动 file/folder
  • 6 创建 临时文件/ 文件夹
    • 6.1 with TemporaryFile() as tf: 创建临时文件
    • 6.2 with TemporaryDirectory() as td: 创建临时文件夹
  • 7 HomeWork 项目作业


整理博客不易,如需转载请注明出处 !

手动反爬:【Python自动化办公】文件管理

https://blog.csdn.net/Lyun911/article/details/114438189


1 创建

1.1 os.mkdir() 创建 folder

os.mkdir()/ os.path.exists()

import os
import shutil

if not os.path.exists('新文件夹'):
	os.mkdir('新文件夹')

1.2 os.makedirs() 创建 folders

os.makedirs()

import os

os.makedirs('第一层/第二层/第三层')
# 第一层/第二层 文件夹如果有,不会报错
# 但是如果已经有第三层文件夹就会报错

1.3 open() 创建 file

f = open('test.txt', 'r', encoding = 'utf8')
text = f.readlines()    # 输出:list
print(text)
f.close()# 忘记写 f.close() 会出错

1.4 with open() as f: 创建 file

with open('./1.txt', 'a+', encoding='utf-8') as f:
    f.seek(0)# 用这个方法可以将cursor游标放在起始位置,否则a+方法默认在最后
    lines = f.readlines()	# 输出:list
    	for line in lines:
    		print(line)

with open('./2.txt', 'a+', encoding='utf-8') as f:
    f.writelines(lines)

2 重命名

2.1 os.rename() 重命名 file/folder

os.rename('old_folder', 'new_folder')
os.rename('old_file.txt', 'new_file.txt')

3 删除

3.1 os.remove() 删除 file

os.remove('delete.txt')
# 只能删除文件,不能删除文件夹

3.2 shutil.rmtree() 删除 folder

shutil.rmtree('要删除的文件夹')

4 复制

4.1 shutil.copy() 复制 file

# 把文件复制到目录
shutil.copy('file1.txt', './新文件夹')
# 把文件复制到目录,并且重命名
shutil.copy('file1.txt', './新文件夹/new_name.txt')

4.2 shutil.copytree() 复制 folder

shutil.copytree('folders', 'new_folders')
# 新文件夹不能已经存在
# 会将文件夹内所有的文件一起复制过去

5 移动

5.1 shutil.move() 移动 file/folder

shutil.move('file1.txt', '新文件夹/new_name.txt')
# 移动到新文件夹,并且重命名
shutil.move('file1.txt', '新文件夹/')
shutil.move('要移动的文件夹', '新文件夹/')
# 如果要移动到某个文件夹后面,第二个参数最后记得加'/'

6 创建 临时文件/ 文件夹

from tempfile import TemporaryDirectory
from tempfile import TemporaryFile

with TemporaryDirectory() as tmp_folder:

6.1 with TemporaryFile() as tf: 创建临时文件

from tempfile import TemporaryFile

with TemporaryFile('a+') as f:  # 因为是临时文件夹,所以 w+ 比较合适
	f.write('Hi')
	f.seek(1)	           # seek() 使用方式类似于切片器,从第某个字符开始 写入/读取
	data = f.readlines()   # 如果 f.write() 之后没有将光标移动到前面,则读取的时候没有内容
	print(data)			   # 输出:list

6.2 with TemporaryDirectory() as td: 创建临时文件夹

from tempfile import TemporaryDirectory

with TemporaryDirectory() as tmp_folder:
	print(f'临时文件夹已创建{tmp_folder}')

7 HomeWork 项目作业

编写一个Python程序,要求
	1.找出当前目录下所有 .pdf文件
	2.将所有文件重命名,在原本文件名的开头加上最后修改日期
	1.比如原来是 a.pdf , 则改为 2021-03-06 a.pdf
	3.创建一个新文件夹叫 backup
	4.将所有重命名后的文件都移动到 backup文件夹里面
import os
import shutil
from datetime import datetime


# 先创建一个备份文件夹
backup_dir = './backup/'
if not os.path.exists(backup_dir):
    os.mkdir(backup_dir)

print('开始备份'.center(50, '-'))
for f in os.scandir('./'):
    if f.name[-4:] == '.pdf':
		# 找出文件的创建日期,用 .date() 格式化为 yyyy-mm-dd
        f_mtime = datetime.fromtimestamp(f.stat().st_mtime).date()
        
		# 给文件起一个新名字,复制到备份文件夹中,之后删除
		# 如果直接剪切,中途结束程序可能导致文件损坏
        new_name = f'{f_mtime}_{f.name}'
        os.rename(f.name, new_name)
        shutil.copy(new_name, backup_dir)
        os.remove(new_name)
        
        print(f'文件【{new_name}】已添加修改日期,并备份至【{backup_dir}】文件夹中')
print('备份结束'.center(50, '-'))

你可能感兴趣的:(Python基础,python)