2021-05-06 Python中级Day01

  • 文件

1.文本文件:可以使用文本剪辑软件查看,如python源文件,记事本txt

2.二进制文件:不可以使用文本剪辑软件查看,比如图片,音频等

  • 文件的基本操作

1.三个步骤:打开文件,读写文件,关闭文件

2.一个函数三个方法:函数open,方法read,write,close

open:打开文件,并返回文件操作对象

read :将文件内容读取到内存,read方法执行后,会把文件指针移动到文件的末尾

write : 将指定内容写入文件
close :关闭文件

read/write/close三个方法都需要通过文件对象来调用

3.read方法

a.打开文件,例子见下:

#open第一个参数是要打开的文件名,encoding='UTF-8'是字符编码一般是UTF-8

#默认的路径
file = open("vw.txt",encoding='UTF-8')或
#指定路径,PS:路径前面加上r是为了后面就不用转义字符了
file = open(r'd:\46\vw.txt’,encoding='UTF-8')

text=file.read()
print(text)

file.close()

b.open函数详解

f = open("文件名", "访问方式"):频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以只读、只写的方式来操作文件
        访问方式:

r

只读方式打开文件(默认模式)

指针在开头文件不存在,抛出异常
w只写方式打开文件 

文件存在,被覆盖

文件不存在,创建新文件

a追加方式打开文件文件存在,指针放在结尾文件不存在,创建新文件
r+读写方式打开文件指针放在开头文件不存在,抛出异常
w+读写方式打开文件 

文件存在,被覆盖

文件不存在,创建新文件

a+读写方式打开文件文件存在,指针放在结尾文件不存在,创建新文件

c.指针的变动

文件对象.seek(0) : 将文件指针移到开头

d.按行读取文件

read 方法默认会把文件的所有内容一次性读取到内存如果文件太大,对内存的占用会非常严重
readline方法可以一次读取一行内容方法执行后,会把文件指针移动到下一行,准备再次读取.比如

或者

或者:

  • 文件和文件夹的常用操作

1.创建、重命名、删除、改变路径、查看目录内容。需要导入os模块

2.文件操作

  • 文件重命名:os.rename(源文件名,目标文件名)
  • 删除文件:os.remove(文件名)

3.目录操作

  • 目录列表:os.listdir(目录名)
  • 创建目录:os.mkdir(目录名)
  • 删除目录:os.rmdir(目录名)
  • 获取当前目录:os.getcwd()
  • 判断是否是文件:os.path.isdir(文件路径)

作业1: 完成网页自动生成软件的制作,选择news.template的模板文件,点击生成网页按钮,在当前项目中生成以网页标题为文件名的.html文件,

import tkinter
import os
from tkinter import messagebox
import tkinter.filedialog
top=tkinter.Tk()
top.title('网页自动生成器')
top.config(bg='blanched almond')
sw=top.winfo_screenwidth()
sb=top.winfo_screenheight()
width=500
height=300
x=(sw-width)//2
y=(sb-height)//2
top.geometry('%dx%d+%d+%d'%(width,height,x,y))

lexcel=tkinter.Label(top,text='选择模板文件:',font=('楷体',12),height=2,bg='blanched almond')
lexcel.grid(row=0,column=0)
eexcel=tkinter.Entry(top,font=('楷体',12),width=20)
eexcel.grid(row=0,column=1)
def choose():
    eexcel.delete(0,'end')
    file_path=tkinter.filedialog.askopenfilename(title='选择文件')
    eexcel.insert('end',file_path)
bexcel=tkinter.Button(top,text='选择',font=('楷体',12),bg='blanched almond',width=10,height=1,command=choose)
bexcel.grid(row=0,column=2)

ltitle=tkinter.Label(top,text='网页标题:',font=('楷体',12),height=2,bg='blanched almond')
ltitle.grid(row=1,column=0)
etitle=tkinter.Entry(top,font=('楷体',12),width=20)
etitle.grid(row=1,column=1)

lcontent=tkinter.Label(top,text='网页内容:',font=('楷体',12),height=2,bg='blanched almond')
lcontent.grid(row=2,column=0)
econcent=tkinter.Entry(top,font=('楷体',12),width=20)
econcent.grid(row=2,column=1)
def save():
    strname=eexcel.get()
    strtitle=etitle.get()
    strcontent=econcent.get()
    if str(strname)=='':
        messagebox.showinfo('选择提示','没有选择文件')
    elif str(strname).find('.template',0,len(str(strname)))==-1:
        messagebox.showinfo('选择提示','文件格式不正确')
    elif str(strtitle)=='':
        messagebox.showinfo('输入提示','输入标题')
    elif str(strcontent)=='':
        messagebox.showinfo('输入提示','输入内容')
    else:
        f=open(strname,encoding='UTF-8')
        text=f.read()
        f.close()
        text=text.replace('${title}',strtitle).replace('${content}',strcontent)
        file_path=r'%s%s.html'%(os.getcwd(),strtitle)
        fw=open(file_path,'w',encoding='UTF-8')
        fw.write(text)
        fw.close()
        messagebox.showinfo('成功提示','网页生成成功')
bsave=tkinter.Button(top,text='生成网页',bg='blanched almond',font=('楷体',12),width=10,height=1,command=save)
bsave.grid(row=3,column=1)
top.mainloop()

作业2:统计一个文件中单词的出现次数,并将内容和出现次数写入到另一个文件中

f=open(r'a.txt','r',encoding='utf-8')
data=f.readlines()
print(data)
datal=[]
for x in data:
    datal.append(x.splitlines()[0])
print(datal)
data2=datal.copy()
data2=set(data2)
f2=open(r'b.txt','a',encoding='utf-8')
for x in data2:
    sum=0
    for y in datal:
        if x==y:
            sum+=1
    data3='{0} {1}\n'.format(x,sum)
    f2.writelines(data3)
f.close()

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值