目录
1)文件概述
文件标识:文件标识的意义:找到计算机中唯一确定的文件。
文件标识的组成:文件路径、文件名主干、文件扩展名。
sys模块
stdin(标准输入文件)stdout(标准输出文件)stderr(标准错误文件)
import sys
file = sys.stdout
file.write("hello")
hello
2)文件的基本操作
文件的打开、关闭与读写是文件的基础操作,任何更复杂的文件操作都离不开这些操作。
open()用于打开文件:open(file, mode='r', buffering=-1)
若open()函数调用成功,返回一个文件对象。
若待打开的文件不存在,文件打开失败,程序会抛出异常,并打印错误信息。
file:文件的路径。
mode:设置文件的打开模式,取值有r、w、a。
buffering:设置访问文件的缓冲方式。取值为0或1。
r:以只读方式打开文件(mode参数的默认值)。
w:以只写方式打开文件。
a:以追加方式打开文件。
b:以二进制形式打开文件。
+:以更新的方式打开文件(可读可写)
用open()函数打开文件夹,我们要用cloes()来关闭
为什么要及时关闭?因为
计算机中可打开的文件数量是有限
打开的文件占用系统资源
若程序因异常关闭,可能产生数据丢失
3)文件的读写
read()、readline()、readlines()方法write()、writelines()
.写文件——write()方法和writelines()
writelines()方法用于将行列表写入文件,其语法格式如下:
write()方法可以将指定字符串写入文件,其语法格式如下:
with open('file.txt', mode='r') as f:
这里是在test.txt文件夹中写入对象,这里我换了行
read()方法readline()方法
read()方法可以从指定文件中读取指定字节的数据,其语法格式如下:
readline()方法可以从指定文件中读取一行数据,其语法格式如下:
with open('D:\qq\\test.txt',mode='r',encoding='utf8')as f:
a=f.read()
print(a)
helloword
你好
追加
# with open('a.txt',mode='a') as f:
# a=f.write('n6666666ihao ddd\n')
# print(a)
csv
import csv
with open('./data.csv',mode='w',encoding='utf8')as file:
b=csv.writer(file)
b.writerow('abcdb')
b.writerow(['abcdefg,sdfgj'])
['a', 'b', 'c', 'd', 'b']
# 读取 csv
with open('./data.csv',mode='r',encoding='utf8') as file:
b=csv.reader(file)
for line in b:
print(line)
[]
['abcdefg,sdfgj']
[]
4)文件与目录管理
os模块
os模块中定义了与文件操作相关的函数,利用这些函数可以实现删除文件、文件重命名、创建/删除目录、获取当前目录、更改默认目录与获取目录列表等操作。
管理文件与目录
删除文件——os.remove(文件名)
文件重命名——os.rename(原文件名,新文件名)
创建/删除目录——os.mkdir(目录名)/os.rmdir(目录名)
获取当前目录——os.getcwd()
更改默认目录——os.chdir(路径名)
获取目录列表——os.listdir(目录/路径)
这里随便用两个方法来验证
用chdir()切换到当前路径,利用makedirs()来创建多级目录
再删除
path=input("请输入路径")
os.chdir(path)
os.makedirs('zz/hh/zh/zdh')
# shutil.rmtree('zz/')
x=glob.glob('**/')#获取当期那目录的文件夹
y=glob.glob('**')#获取当前目录的文件和文件夹
a=glob.glob('**/',recursive=True)#可以便利出所有的子目录
b=glob.glob('**/*.zip',recursive=True)#加上" /* "表示获取目录中的文件需要
print(a)
print(b)
print(x)
print(y)
5)文件的定位读写
tell()方法和seek()方法
ell()方法用于获取文件当前的读写位置,以操作文件file.txt为例,tell()的用法如下:
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell()) # 再次获取文件读写位置
seek()方法
Python提供了seek()方法,使用该方法可控制文件的读写位置,实现文件的随机读写。seek()方法的语法格式如下:
seek(offset, from)
offset:表示偏移量,即读写位置需要移动的字节数。
from:用于指定文件的读写位置,该参数的取值为0、1、2。
seek()方法调用成功后会返回当前读写位置。
Python提供了seek()方法,使用该方法可控制文件的读写位置,实现文件的随机读写。seek()方法的语法格式如下:
with open('file.txt') as f:
print(f.tell()) # 获取文件读写位置
print(f.read(5)) # 利用read()方法移动文件读写位置
print(f.tell()) # 再次获取文件读写位置
eg:
# 对文件进行压缩
import zipfile
import os
dir_lis=os.listdir()#找到所有文件夹
# print(dir_lis)
with zipfile.ZipFile('zdh.zip','w')as zipojb:
for file in dir_lis:
if file.endswith('.py'):#打包。py结尾的文件夹
zipojb.write(file)#把它写入zipojb(自己取的名字)
with zipfile.ZipFile('zdh.zip','r')as zipojb:#这个是查看zdh.zip这压缩包下边的文件
print(zipojb.namelist())
with zipfile.ZipFile('zdh.zip','r')as zipojb: #解压 extractall (路径)
zipojb.extractall('D:\python\pythonb 编译\解压')#这里是选个位置存放
['1027.py', '1117作业.py', '1120.py', '1124.py', '1206.py', '121.py', '1214.py', '927课堂‘.py']
eg2:批处理
from docx import Document
import random
import xlrd
def wd(title,name,time):
document=Document('zuoye.docx')
for i in document.paragraphs:
# print(i.text)
i.text = i.text.replace('*_*_*',title)
i.text = i.text.replace('***',name)
i.text = i.text.replace('xxxx-xx-xx',time)
# title = str(random.randint(1,30))+title
document.save(title + '.docx')
# wd('你好公司', '张大华', '2020.11.09')
excel=xlrd.open_workbook('zuoye1.xls')
table=excel.sheet_by_index(0)
nows=table.nrows
for i in range(nows):
title=table.cell(i,0).value
name=table.cell(i,1).value
time=table.cell(i,2).value
# time = xlrd.xldate.xldate_as_datetime(tablecell(i,2).value,0)
# time =str(time.strftime('%Y-%m-%d'))
# print(title,name,time)
wd(title,name,time)
本章小结
本章主要介绍了文件与数据格式化相关的知识,包括计算机中文件的定义、文件的基本操作、文件与目录管理、数据维度与数据格式化。通过本章的学习,希望读者能了解计算机中文件的意义、熟练地读取和管理文件,并掌握常见的数据组织形式。