python基础:文件操作
一、实验题目
python基础:文件操作
二、实验内容简介
现有文本文件,内容是每行包含名学生信息:序号,姓名,身份证号,性别,并且以一个空格分开。在img文件夹下有以身份证号命名的个人照片,但是其中的照片很多,也有可能某些学生没有照片。
·请编写程序
·创建文件夹,名称为img_new
·将img文件夹中所有包含的学生的照片命名为学生姓名存储到img_new文件夹中。
三、实验过程
1. 代码
import os
import shutil
from shutil import copy
# 创建文件夹,名称为img_new
path_new = './img_new/'
# 判断路径是否存在
if not os.path.exists(path_new):
# 递归创建多层目录
os.makedirs(path_new)
# 打开info
file = open('info.txt', 'r', encoding='utf-8')
# img路径
path_p = './img'
filelist = os.listdir(path_p)
for j in file.readlines():
identity = j.split(" ")[2]
name = j.split(" ")[1]
for i in filelist:
if i[1:18] in identity:
src = os.path.join(os.path.abspath(path_p), i)
dst = os.path.join(os.path.abspath(path_new), i)
newName = os.path.join(path_new) + name+'.png'
# 复制图片
shutil.copy(src, dst)
# 图片重命名
os.rename(dst, newName)
# 关闭
file.close()
2. 关键知识点解析
① 模块的导入
import : import random
import os, time, sys, re
import random as rd
from.....import: from random import randint
from random import randint, choice
from random import randint as rd
注:同一个模块,只会被导入一次
② 文件操作
打开文件:file = open(file_name,access_mode,encoding=’utf-8’)
--encoding: 文件编码格式,默认为当前系统的置信编码
关闭文件:file.close()
写文件:file.write('aaaaa') --参数为字符串
file.writelines(['aaaaa\n', 'bbbbbb\n']) --参数为列表
读文件:file.read() --一次性将文件内容读入到字符串变量中
file.readline() --每次读取一行;返回的是一个字符串对象
file.readlines() --一次性读取整个文件;自动将文件内容分析成
一个字符串列列表
os.makedirs(path_new):递归创建多层目录,若最内层目录已存在则抛出异常
os.listdir(path_p):列出指定目录下文件名
os.rename(old,new):将文件old重命名为new
④ 文件系统-os.path from os import path
os.path.exists(path_new):判断路径是否存在
⑤ 复制图片
import shutil
shutil.copy(src, dst)