1. 文件读取

1.1 file文件


file文件读取:只能写入字符串,如果要写入字符串以外的数据,先将他转换为字符串,文件内的数据不容易操作


#文件打开
file.open()
#文件关闭
file.close()
#读取文件
file.read()
#读取一行
file.readline()
#读取一行,返回列表
file.readlines()
#写
file.write()
#写一行
file.writelines()
#返回文件当前的指针位置
file.tell()
#设置光标位置,0代表文件开头,1代表文件当前位置,2代表文件末尾
file.seek(偏移量,0|1|2)
#读取文件后,截取n行
file.truncate(n)
#读取文件内容
with open('info.txt','rt',encoding='utf8') as file:emp=file.read()print(emp)
#文件内容写入
with open('note.txt','wt+') as fa:fa.write(str(c+d))fa.seek(0)print(fa.read())

1.2 shelve:以键值对的形式存储,键必须是字符串,值可以是任意类型,方便操作

import  shelve
d=shelve.open('a.txt')
#存储信息
d['tom']={'age':18,'sex':'male'}
#修改信息
d['tom']={'age':20,'sex':'male'}
#访问文件
d['tom']['sex']
#关闭文件
d.close()

1.3 pickle:将python支持的数据,进行序列化的存取

import  pickle
#pickle.dump(obj, file)
#必填参数obj表示将要封装的对象
#必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb”
data = ['aa', 'bb', 'cc']
with open('text', 'wb') as f:#写入文件,只能写一次pickle.dump(data, f)with open('text', 'rb') as f:#读取文件result = pickle.load(f)print(result)

2. os模块

定义:os模块是方便与操作系统相互交互的模块
功能:系统相关、目录及文件操作、执行命令和管理进程

import os
#列出指定目录的文件和文件夹
os.listdir(path)
#获取当前路径
os.getcwd()
#删除目录或多层目录
os.rmdir/removerirs()
#将分离的各部分组成一个路径名
os.path.join(path1,path2)
#判断是否为目录(文件夹),参数为绝对路径
0s.path.isdir(path)
#判断是否为文件,参数为绝对路径
0s.path.isfile(path)
#当前系统的类型
os.name
#删除文件
os.remove()
#生成目录树下的所有文件名
os.walk(path)
#创建目录/多层目录
os.mkdir/makedirs(dirname)
#返回当前文件的绝对路径
os.path.abspath('文件名')
#判断路径是否存在
os.path.exists(path)
#返回上一级目录
os.chdir('..')
#进入到当前目录
os.chdir('c:/user/86178/desktop/1234')

3. sys模块

#命令行参数List,第一个元素是程序本身路径
sys.argv
#返回操作系统平台名称
sys.platform
#返回python解释器版本信息
sys.version
退出程序,sys.exit(0)
sys.exit(n)
#标准输出
sys.stdout.write()print
#标准输入
sys.stdin.readline()input
#返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.path

练习1:

# ①打开并读取文件 info.txt中的内容
# ②将读到的文件内容,存入到变量emp_info
import re,sys,os,datetime,calendar,time
with open('info.txt','rt',encoding='utf8') as file:emp_info=file.read()print(emp_info)
# ③在emp_info内,用正则获取到新师面试的日期,输出出来
a=re.findall(r'[\d]{4}-[\d]{2}-[\d]{2}',emp_info)
print(a[0])
# ④面试不通过,将在20天后还有二次面试的机会,计算二次面试的日期。
b=time.strptime(a[0],'%Y-%m-%d')
print(b)
c=datetime.date(b[0],b[1],b[2])
d=datetime.timedelta(days=20)
print(f'二次面试的日期为:{c+d}')
# ⑤用正则获取到新师所有的成绩,并输出
e=re.findall(r'[\d]{2}\.[\d]{1}',emp_info)
print(e)
# ⑥计算出这位新师刘丽丽的面试平均成绩
# ⑦如果平均成绩高于97.5请输出一句话:可以录取,如果低于97.5则手动抛出一个异常。
# ⑧异常被捕获之后,输出:请准备于XX月XX日参加二次面试(写上二次面试的日期)
f=[float(i) for i in e]
print(f)
try:g=sum(f)/len(f)print(f'刘丽丽的平均成绩为:{g}')print('可以录取')if g<97.5:raise Exception
except Exception:print('请准备于7月11日参加二次面试')# ⑨在pycharm当前目录下,新建文件note.txt,将二次面试的日期写入
with open('note.txt','wt+') as fa:fa.write(str(c+d))fa.seek(0)print(fa.read())
# ⑩用正则获取到刘丽丽邮箱,将邮箱一同写入note.txt中(不要删除日期)
h=re.findall(r'[\w]{7}@qq.com',emp_info)
print(h[0])
# ⑪获取你pycharm当前的工作目录
print(os.getcwd())
# ⑫获取当前的目录下的所有文件及文件夹
print(os.listdir(os.getcwd()))

练习2:

# 1.编写Python程序,实现如下功能:
# (1)编写函数,可以求出100 - 999之间所有的水仙花数,并返回。
# (2)调用该函数,将得到所有水仙花数据写入文件t1.txt
# (3)使用文件操作方式打开t1.txt文件,读取文件内容,并打印出来
def number():ls=[]for i in range(100,999):if (i%10)**3+(i//10%10)**3+(i//100%10)**3==i:ls.append(i)ls1=[str(i) for i in ls]return ' '.join(ls1)with open('t1.txt','wt') as f:g=f.write(number())print(g)f.close()
with open('t1.txt','rt') as f1:h=f1.read(g)print(h)f1.close()
# 2.编写Python程序,实现如下功能:
# (1)手动创建名为t2.txt的文件,将以下内容添加到文件中
# This is a message
# tony是一个名副其实的iron - man。
# tony其实是个男人。
# 谁说tony是坏人?
# 你们真逗,tony再厉害,也掩饰不住资深富人的气质。with open('t2.txt','wt',encoding='utf8') as ff:fa=ff.write('This is a message\ntony是一个名副其实的iron - man。\ntony其实是个男人。\n谁说tony是坏人?\n你们真逗,tony再厉害,也掩饰不住资深富人的气质')# print(fa)
# (2)使用文件操作方式打开t2.txt文件:
with open('t2.txt', 'rt+', encoding='utf8') as ff:fb=ff.read()b = str(fb).replace('tony', 'TONY')# print(b)
# (3)将文件中所有的tony都替换成大写的TONYb = str(fb).replace('tony', 'TONY')# print(b)# with open('t2.txt', 'r+', encoding='utf8') as ff:d=ff.write(b)print(d)ff.close()
# (4)使用文件操作方式打开t2.txt文件,读取文件内容,并打印出来
with open('t2.txt','rt',encoding='utf8') as aa:c=aa.read(d)print(c)

练习3:

# 5.写Python程序,完成如下功能。
# ①生成1 - 100
# 之间所有能被3整除的整数,保存在列表alist中并输出
# ②将alist的所有元素写入文件test3.txt中
# ③通过读方式打开test.txt文件,读取该文件中的内容并打印输出
alist=[]
for i in range(1,100):if i%3==0:alist.append(i)
print(alist)
ls=[str(i) for i in alist]
l=' '.join(ls)
# print(l)
with open('test3.txt','wt') as f:la=f.write(l)print(la)
with open('test.txt','rt') as f1:lb=f1.read(la)print(lb)
# 1.使用文件处理,完成以下操作
# (1)文件信息写入
# ①编程创建一个新文件,文件名称为c.txt
# ②利用代码,查找出1-100之间所有能被3整除的数字
# ③将上一问中的数字,写入到c.txt文件
# (2)文件信息写出
# ①重新打开文件c.txt,获取文本内容
# ②将文本内容进行处理,获取
ls=[]
for i in range(1,100):if i%3==0:ls.append(i)
方法一
with open('c.txt','wt',encoding='utf8') as file:b=file.write(str(ls))
with open ('c.txt','rt',encoding='utf8') as f:f.read(b)f.seek(0,0)print(f.read())
方法二
with open('c.txt','rt+',encoding='utf8') as file:
#     file.write(str(ls))
#     file.seek(0,0)
#     c=file.read()
#     print(c)

练习4:

# 2.1)现在有一份‘邀请函.txt’的空白文件,请在同级目录下,编写一段代码,将内容‘诚挚邀请您来参加本人生日晚会’写入。
with open('邀请函.txt','wt+',encoding='utf8') as fa:fa.write('诚挚邀请您来参加本人生日晚会\n')
# 2)在第一题的基础上,添加上问候语和发件人,内容是’best regards 李帆’,让内容看起来是:
# 诚挚邀请您来参加本次宴会
# best regards
# 李帆fa.write('best regards\n')fa.write('李帆')print(fa)fa.seek(0,0)b=fa.read()print(b)

练习5:

# 3)在第二题的基础上,这封邮件需要发送给‘丁二’、‘张美丽’、‘韩梦’三位朋友,请在邮件内容开头处添加收件人名字,并且生成相应名字的邮件。邮件内容应该为:
# 丁二:
# 诚挚邀请您来参加本次宴会
# best regards
# 李帆import shelve,pickle
with open('邀请函.txt','wt+',encoding='utf8') as fa:# fa.write('诚挚邀请您来参加本人生日晚会\n')fa.write('诚挚邀请您来参加本次宴会\nbest regards\n李帆')fa.seek(0)f = fa.read()with open('丁二.txt','rb+') as fb:pickle.dump('丁二:\n'+f,fb)fb.seek(0,0)c=pickle.load(fb)print(c)fb.close()print('----------------------')with open('张美丽.txt','rb+') as fc:pickle.dump('张美丽:\n'+f,fc)fc.seek(0,0)d=pickle.load(fc)print(d)fc.close()print('-----------------------')with open('韩梦.txt','rb+') as fd:pickle.dump('韩梦:\n'+f,fd)fd.seek(0,0)e=pickle.load(fd)print(e)fb.close()# with open('丁二.txt','wt+',encoding='utf8') as fb:
#     fb.write('丁二:\n')
#     fb.write(b)
#     fb.seek(0,0)
#     c=fb.read()
#     print(c)
#     fb.close()
# with open('张美丽.txt','wt+',encoding='utf8') as fb:
#     fb.write('张美丽:\n')
#     fb.write(b)
#     fb.seek(0,0)
#     d=fb.read()
#     print(d)
#     fb.close()
# with open('韩梦.txt','wt+',encoding='utf8') as fb:
#     fb.write('韩梦:\n')
#     fb.write(b)
#     fb.seek(0,0)
#     e=fb.read()
#     print(e)
#     fb.close()

练习6:

# 4)编写Python程序,实现如下功能:
# t2.txt的数据: Repetition is the mother of all learning重复是学习之母。
# ①读取文件t2.txt的数据保存在astr中并输出
# ②将astr中所有的小写字母都转为大写,原大写字母不变,得到一个新的数据并输出
# ③使用合适方法截取t2.txt文件,只保留原始数据的前10个字节
# ④打开确认是否正确截取
with open('t2.txt','rt+',encoding='utf8') as ff:ff.write('Repetition is the mother of all learning重复是学习之母')ff.seek(0,0)astr=ff.read()print(astr)a=astr.upper()print(a)b=ff.truncate(10)print(b)
# 5)新建名为work的源程序文件,编写Python程序,完成如下功能。(30分)
# (1)(1) 将已经给定的文件work.jpg放置到桌面上,并读取(提示:不是文本文件)查看、输出读取的内容
# (2)再将读取的内容写入到pycharm当前目录下的wk.jpg中(如果无此文件就创建1个)
# (3)将图片work.jpg中的3行文字逐行写入wk.txt中(如果无此文件就创建1个)
# (4)读取中wk.txt的内容,放入words 中
# (5)将内容中的'你'替换成'you'
with open(r'C:\Users\86178\Desktop\work.jpg','rb') as fc:c=fc.read()print(c)
with open(r'wk.jpg','wb+') as f:f.write(c)f.seek(0)print(f.read())with open(r'wk.txt','wt+',encoding='utf8') as fb:fb.writelines('自己不努力,别人帮你是情分,不帮你是本分,别人也不会帮你')# print(fb.sell())fb.seek(0,0)b=fb.read()print(b)c=b.replace('你','you')print(c)

练习7:

# 2.使用os,sys完成以下操作
# (1)查看操作系统平台名称
print(sys.platform)
# (2)查看python解释程序的版本信息
print(sys.version)
# (3)查看当前工作目录
print(os.getcwd())
# (4)在当前工作目录下,使用异常处理解决新建空目录adir时出现的错误:
# 如果空目录不存在,新建
# 如果空目录已存在,提示已存在
if not os.path.exists(r'E:\untitled2\datedate\adir'):os.mkdir(r'E:\untitled2\datedate\adir')
else:print('提示已存在')
# (5)查看当前工作目录下的所有文件和目录
# (6)输出当前工作目录下所有文件和目录的绝对路径
for i in os.listdir(os.getcwd()):i1=os.path.abspath(i)print(i1)

练习7:

import os
# (1)输出pycharm当前的工作目录及文件
print(str(os.listdir(os.getcwd())))
print('--------------------------------------------------------------')
# (2)以追加的方式打开文件week2.txt(提示:考试题中已经给出此文件)
# (3)读出week2.txt中的内容(注意文件指针位置)
with open('week2.txt','at+',encoding='utf8') as f:# f.seek(0)# f.read()f.write(str(os.listdir(os.getcwd())))f.seek(0)g=f.read()print(g)
# (4)将当前工作目录中的文件和目录名追加写入新文件week2.txt
# (5)在当前工作目录中再新建xx和yy这2个空目录
if not os.path.exists('xx'):os.mkdir('xx')
if not os.path.exists('yy'):os.mkdir('yy')
# (6)接着在week2.txt中写入字符串“---------”,
with open('week2.txt','wt',encoding='utf8') as f:f.write('---------\n')
# (7)最后将当前工作目录中所有的目录再次写入week2.txtf.write(str(os.listdir(os.getcwd())))

练习8:

# 1)以读写方式打开给定的info.txt文件
import os,sys,re
with open(r'C:\Users\86178\Desktop\06-1人工能学院Python6月周考3\info.txt','rt',encoding='utf8') as file:
# 2)读取文件中的所有内容,放入my_st之中my_st=file.read()print(my_st)
# 3)在当前的pycharm工作目录下新建2个文件夹mytel,mybox
if not os.path.exists('mytel'):os.mkdir('mytel')
if not os.path.exists('mybox'):os.mkdir('mybox')
# 4)输出当前目录下所有的文件和文件夹
b=os.getcwd()
c=os.listdir(b)
print(c)
# 5)用指令删除新建的文件夹mybox
if os.path.exists('mybox'):os.rmdir('mybox')
# 6)查看当前目录中的所有文件,确保mytel已经创建,mybox已经删除
d=os.listdir(os.getcwd())
print(d)
# 7)获取7(上一题目)中所有文件的绝对路径,并写入到当前目录下新建的文件my_path.txt之中
with open('my_path.txt','wt',encoding='utf8') as ff:for i in d:e=os.path.abspath(i)ff.write(e)
# 8)输出系统的版本号
print(sys.version)
# 9)匹配出my_st中所有北京的电话号码,格式如010-XXXXXXXX(其中010为北京区号)
j=re.findall('010-[\d]{8}',my_st)
print(j)
# 10)把这些号码写入到mytel下的新建文件tel.txt之中
os.chdir('mytel')
for i in j:with open('tel.txt','a+') as fa:fa.write(i+'\n')# 11)每行电话号码写入后,进行换行
# 12)用正则匹配,再将my_st中找出所有类似2021-9这样的时间(年,月)获取并输出
print(re.findall('[\d]{4}-[\d]{1,2}', my_st))
# 13)再编写一个正则表达式reg,用来获取163邮箱
reg=r'[\d\w]{6,10}@163\.com'
print(re.findall(reg, my_st))
# 14)用reg从my_st中匹配一个163邮箱并输出

练习9:

# 1.使用正则和相关python模块完成以下操作(每小题4分)
# 1)获取并输出你pycharm的系统版本号
import re,os,sys
# 2)在你的pycharm中,获取当前的工作目录,放入cf之中,输出cf下的所有文件及文件夹
cf=os.getcwd()
print(cf)
print(os.listdir(cf))# 3)定义一个函数show_files(ph),参数ph代表一个目录(或路径),功能是输出ph下所有的文件和文件夹
def show_files(ph):os.chdir(ph)print(os.listdir(ph))
# show_files(r'C:\Users\86178\Desktop')
# 4)打开并读取的zhang.txt文件,放入stu中
with open(r'C:\Users\86178\Desktop\07-1人工能学院Python7月周考3\zhang.txt','rt',encoding='utf8') as file:stu=file.read()print(stu,type(stu))# 5)用正则,从stu中提取到张宝的入学日期并输出
da=re.findall(r'[\d]{4}-[\d]{1,2}-[\d]{2}',stu)
print(da[0])
# 6)用正则,从stu中提取到张宝的所有成绩并输出
db=re.split(r',|;', stu)
print(db)
la=[]
for i in db:c=re.search(r'成绩[\d]{2}\.?[\d]?$',i)if c:aaa=c.group()la.append(aaa)
print(la)
for i in la:d = re.search(r'[\d]{2}\.?[\d]?$', i)print(d.group())
# 7)用正则,从stu中提取到张宝的电子信箱并输出
print(re.search(r'[\w]{6,10}@(qq|163|126)\.com', stu).group())
# 8)在当前的pycharm工作目录下新建3个文件夹zh_score,zh_mail,zh_date
ls=['zh_score','zh_mail','zh_date']
for i in ls:if not os.path.exists(i):os.mkdir(i)# 9)调用函数show_files,输出当前目录下所有的文件和文件夹
print(os.getcwd())
show_files(os.getcwd())
# 10)用指令删除新建的文件夹zh_dateif os.path.exists('zh_date'):os.rmdir('zh_date')
# 11)在zh_score中创建文件note.txt,并写入5)和6)中的内容:张宝的入学日期,张宝的成绩
import picklewith open('note.txt','ab+') as f:pickle.dump(da[0],f)with open('note.txt','ab+') as fl:for i in la:d = re.search(r'[\d]{2}\.?[\d]?$', i)pickle.dump(d.group(),fl)with open('note.txt','rb+') as fa:print(pickle.load(fa))
if not os.path.exists('zh_score'):os.makedirs(r'zh_score')
os.chdir('zh_score')
with open('note.txt','wt+',encoding='utf8') as fb:fb.write(da[0]+'\n')for i in la:d = re.search(r'[\d]{2}\.?[\d]?$', i)fb.write(d.group()+'\n')fb.seek(0,0)print(fb.read())
# 12)在zh_score中创建文件note2.txt,并写入以下内容:
with open('note2.txt','wt+',encoding='utf8') as fc:fc.write('2021年中伏天从7月21号开始,饮食应注意:\n''1.去除湿气\n''2.应注意少糖\n''3.避开冰冷食物\n''4.应以开胃为主\n''5.应多食干粮\n''6.补气去火')fc.seek(0)print(fc.read())
# 13)调用函数show_files,输出zh_score下所有的文件和文件夹
show_files(r'E:\untitled2\python2\8月28日\zh_score')
# 14)输出zh_score下所有的文件和文件夹的绝对路径
bb=os.path.abspath('zh_score')
print(bb)
cc=os.chdir(r'E:\untitled2\python2\8月28日\zh_score')
# os.chdir('..')
print(os.listdir(cc))

练习10:

# 3.['吴文哲','刘鑫','冯鑫','杨欣冉','王欢']请在D盘的根目录下分别创建几个文件夹,分别以这几位同学的姓名命名。
# 请把创建的文件夹删除,并做到重复删除时不报错误。
print('---------------------------------------')
a=['吴文哲','刘鑫','冯鑫','杨欣冉','王欢']
for i in a:os.chdir(r'D:')os.mkdir(i)try:os.rmdir(i)except:print('重复删除')
# 4.在你的桌面上建文件夹目录如下:人工智能\1911A\jack
if not os.path.exists(r'C:\Users\86178\Desktop\人工智能\1911A\jack'):os.makedirs(r'C:\Users\86178\Desktop\人工智能\1911A\jack')

python基础------文件读写操作、re、os和sys模块相关推荐

  1. python对文件读写操作

    不知道大家是否跟我一样,总是分不清楚python里面对于读写操作,今天给自己重新总结一下. w+ 可以同时读写,如果文件不存在,则新建文件,写入时是清空之前的内容. a+可以同时读写,如果文件不存在, ...

  2. python怎么读write_Python如何读写文件?python写入文件读写操作详解

    Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...

  3. python基础文件读写(十五)

    文件的读写: # python文件的写操作 # 打开一个文件,赋值给f f = open('text1.txt',mode='x') f.write("line1\n") # 一些 ...

  4. go语言基础-文件读写操作

    文章目录 一. 前言 二. 文件操作 1. 创建文件 2. 文件 打开文件 2. 打开文件 2.1 语法: 2.2 文件选项 2.2.1 文件模式 2.2.2 案例 创建一个不存在的文件 创建目录 创 ...

  5. Python 文件读写操作-Python零基础入门教程

    目录 一.Python 文件的打开 open 二.Python 文件的关闭 close 三.Python 文件的读取 read 1.read 函数 2.readline 函数 3.readlines ...

  6. Python基础-文件操作

    Python基础-文件操作 1.文件的打开和关闭 # 1.打开文件 # 默认r模式 只读 文件不存在,报错 # f = open('a.txt')# w模式 写权限 # 如果文件不存在,就会创建文件 ...

  7. Day6 python对文件的操作——百度飞桨领航团零基础Python入门

    python文件操作 前言 一.JSON是什么? 二.python对文件的操作 1.写入文件内容 2.打开.读取.关闭文件 文件数据若有问题采用两种解决方式 file对象的函数列表 写入文件内容 对象 ...

  8. Python文件读写缓冲区和文件读写操作实例

    1.python文件缓冲区 f = open('test', 'w', 1) # 第三个参数为1表示行缓冲,默认值为-1 while True:data = input('>>>') ...

  9. python文件读写操作

    文章目录 1. open函数介绍 2. 读文件 3. 写文件 4. with 方式读写文件 对文件进行读写操作是很常见的 I/O 操作,在Python中我们可以通过内置函数 open来完成. 1. o ...

最新文章

  1. 命令行操作svn和git和git
  2. C语言函数集(二十)
  3. linux系统下PHP无法调用oracle数据库的解决方法
  4. vs2017c#开源项目_2017年值得关注的开源项目
  5. 为什么学计算机的学生应该向开源项目做贡献?
  6. jQuery整理您的笔记----jQuery开始
  7. 在线医疗和教育,正在争抢未来!
  8. 【刘润五分钟商学院】-163生存,还是灭亡,没有中间态
  9. 全网最全流程面试解析 面试前必看!必收藏!
  10. nba篮球大师服务器维护,NBA篮球大师怎么进不去 NBA篮球大师黑屏闪退解决方法...
  11. 《秘密》-- 东野圭吾
  12. [OSGI] Felix基本环境搭建及操作
  13. ESP8266的sta+ap模式
  14. checking for C compiler ... not found
  15. Qt5学习 模仿qq音乐播放器样式(2)——点击动画效果+歌词颜色变换展示
  16. 软件项目管理 6.10.成本预算
  17. 养成Flash AS代码编写好习惯
  18. Person表并添加数据 实例01
  19. NVDIA CUDA安装失败解决方案最新版(2021.10.8)
  20. Edge浏览器查看md文件

热门文章

  1. RStudio安装后界面一片空白
  2. C++ 内存管理 —— 第一講:C++ 內存構件
  3. Macbook ssh免密登录
  4. Android Studio 关于TextToSpeech Speak失败
  5. 【压缩感知合集5】压缩感知简介和数学模型分析
  6. MySQL数据库修改数据库名的三种方式
  7. 百度网盘限速解决方案--motrix
  8. 人脸识别考勤系统安卓APP(手把手教学-手动滑稽)
  9. 【STM32F429的DSP教程】第25章 DSP变换运算-快速傅里叶变换原理(FFT)
  10. SQL server 计算当前日期为一年中的第几周,以周五/周一作为一周中的第一天