python文件读写的操作

一、python的IO

IO指的是在python中实现输入和输出的操作。

1、输出到控制台

在python中输出数据到控制台的最简单方式就是print()方法,默认的标准输出是屏幕,常见的语法结构如下:

#先定义两个变量,用于输出打印
age = 28
name = "allen老师"
#直接输出字符串
print("hello world!!")
#输出数据,并使用占位符
print("大家好,我是%s,今年%d岁啦!"%(name,age))
#输出数据,逗号分隔变量
print("大家好,我的姓名和年龄是:",name,age)
#输出数据,使用+连接字符串
print("大家好,我的姓名是:"+name+",我的年龄是:"+str(age))

====输出结果===========
hello world!!
大家好,我是allen老师,今年28岁啦!
大家好,我的姓名和年龄是: allen老师 28
大家好,我的姓名是:allen老师,我的年龄是:28

2、键盘输入数据

Python提供了input函数从标准输入设备上读入一个字符串,默认的标准输入是键盘,常见的语法结构如下:

choice = input("请输入你的选项:")
num = int(input("请输入一个数字:"))

二、python的文件IO

Python 提供了必要的函数对文件进行IO操作,你可以用通过open方法创建文件对象,并对文件对象进行读写操作。

1、open 函数

你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写

file object = open(file_name ,mode,encoding)
  • filename:一个包含了你要访问的文件名称的字符串值,要求是全路径,如r"e:\xxx.txt"或者"e:\\xxx.txt"
  • mode:文件的访问模式,只读,写入,追加等
  • encoding:读取数据的编码格式,只有文本文件时才能加该参数
#文件流对象名:f = open(filename,mode)
#要保证你文件字符集和读取的字符要要一致
f = open(r"e:\xxx.txt","r",encoding="utf-8")

mode是文件的读写方式:

  • r:只读模式,不能写入,默认的格式,必须是文件已经存在
  • w:只写模式,覆盖写入,如果文件不存在,创建文件并写入
  • a:追加写入,在原来文件内容的基础上,继续写入数据
  • r+:读写模式,需要文件已存在
  • w+:读写模式,文件可以不存在,它可以先创建、再读写
  • b:二进制读写

2、文件的操作

对文件的操作,基本上就是对文件的读写操作。

读取文本文件中的数据:

  • read(size) :从文件读取指定的字节数,如果未给定或为负则读取所有
  • readline(size) :用于从文件读取整行,包括 “\n” 字符,指定非负整数,则返回相应的字节数
  • readlines(size):读取所有行并返回列表,如size大于零,则一次性返回相应的字节数(减少压力)
#文件流对象名:f = open(filename,mode)
#要保证你文件字符集和读取的字符要要一致
# f = open(r"e:\xxx.txt","r",encoding="utf-8")
#可以不给read方法参数,默认全都读出
#也可以给,如果小于内容的长度,按照指定的字节数读出数据
#如果大于内容的长度,读出所有
# print(f.read(10))
#读取一行数据,包括后面的回车
print(f.readline(10))
#读所有行数据,返回的是一个列表,列表的元素是每一行数据
print(f.readlines())
f.close()

可以使用readlines()方法实现一个简易的小说阅读器:

  • 先创建一个txt文件,将含有多行数据的小说内容粘贴进去
  • 编写如下代码,就可以实现每隔1秒显示一行文字的效果
f = open(r"e:\xiaoshuo.txt","r",encoding="utf-8")
for line in f.readlines():
    print(line)
    time.sleep(1)
f.close()

往文本文件中写入数据:

  • write(str):将字符串写入文件,返回的是写入的字符长度。
  • writelines():向文件写入一个序列字符串列表,如果需要换行则要自己加入每行的换行符
f = open(r"e:\sss.txt","w",encoding="utf-8")
# print(f.write("hello world!"))
ll = ["asdfasdf\n","asdfasdfasfsdf\n"]
f.writelines(ll)
f.close()

3、with语句的使用

使用open去打开一个文件进行读取,假设文件不存在的话,就会抛出一个IOError的错误,此时open后面的close方法将不能正常执行,所以,为了保证无论是否出错都能正确地关闭文件,我们可以使用try … finally来实现。

try:
    f = open(r'e:\xxx.txt', 'r')
    print(f.read())
finally:
    if f:
        f.close()

但是每次都这么写实在太繁琐,所以,Python引入了with语句来自动帮我们调用close()方法:

with open(r"e:\xxx.txt","r",encoding="utf-8") as f:
    print(f.read())

这和前面的try … finally实现的效果是一样的,但是代码更佳简洁,并且不必调用f.close()方法。

三、csv文件的IO操作

1、创建csv文件

  • 创建excel文件,编辑数据后另存为带逗号分隔符的csv文件
  • 创建txt文件,重命名为csv格式,编辑文本,以逗号分隔数据
文本文件存储数据:
username,password,repassword,email
user1,123456,123456,user1@163.com
user2,123456,123456,user2@163.com
user3,123456,123456,user3@163.com
user4,123456,123456,user4@163.com
user5,123456,123456,user5@163.com
user6,123456,123456,user6@163.com
user7,123456,123456,user7@163.com
user8,123456,123456,user8@163.com
user9,123456,123456,user9@163.com
user10,123456,123456,user10@163.com

2、读取csv文件数据


import csv
#现在要做的就是对csv文件的读操作
with open(r"e:\dd.csv","a",encoding="utf-8") as f:
    data = csv.reader(f)
    #<_csv.reader object at 0x000001B4E939B518>
    # <class '_csv.reader'>ss
    # print(type(data))
    for i in data:
        print(i)

=输出结果=====
[‘username’, ‘password’, ‘repassword’, ‘email’]
[‘user1’, ‘123456’, ‘123456’, ‘user1@163.com’]
[‘user2’, ‘123456’, ‘123456’, ‘user2@163.com’]
[‘user3’, ‘123456’, ‘123456’, ‘user3@163.com’]
[‘user4’, ‘123456’, ‘123456’, ‘user4@163.com’]
[‘user5’, ‘123456’, ‘123456’, ‘user5@163.com’]
[‘user6’, ‘123456’, ‘123456’, ‘user6@163.com’]
[‘user7’, ‘123456’, ‘123456’, ‘user7@163.com’]
[‘user8’, ‘123456’, ‘123456’, ‘user8@163.com’]
[‘user9’, ‘123456’, ‘123456’, ‘user9@163.com’]
[‘user10’, ‘123456’, ‘123456’, ‘user10@163.com’]

3、写入csv文件数据

import csv
#现在要做的就是对csv文件的写操作
with open(r"e:\dd.csv","a",encoding="utf-8",newline='') as f:
    # 往csv文件中写入一行数据
    dda = ['user11', '123456', '123456', 'user1@163.com']
    csv_writer = csv.writer(f,dialect="excel")
    csv_writer.writerow(dda)
    
    # 往csv文件中写入多行数据
    csv_writer.writerows([['user11', '123456', '123456', 'user11@163.com'],['user12', '123456', '123456', 'user12@163.com']])

newline=’’,主要是避免写入数据之后,有多余的换行

四、excel文件的IO操作

使用xlrd、xlwt模块对excel文件中的数据进行读写。

1、安装xlrd模块

window+R打开cmd窗口,执行下面命令完成xlrd、xlwt的安装

pip3 install xlrd
pip3 install xlwt

2、读取数据

将上文的数据做到excel文件中,作为数据源


import xlrd
#f作为文件对象
f = xlrd.open_workbook(r"e:\dd.xlsx")
# <xlrd.sheet.Sheet object at 0x000001801A725248>
# sheet页索引号是从0开始的
# table = f.sheet_by_index(0)
# table = f.sheet_by_name("Sheet1")
table = f.sheets()[0]
rows = table.nrows
cols = table.ncols
# print(rows)
# print(table.row_values(0)[0])
for i in range(0,n):
    #遍历行数据,然后索引单元格
    # print(table.row_values(i)[0])
    #直接通过坐标,遍历单元格数据
    print(table.cell_value(i,0))

3、写入数据

import xlwt
#创建工作簿
f = xlwt.Workbook(encoding="utf-8")

#  #创建sheet
sheet1 = f.add_sheet(r'sheet1',cell_overwrite_ok=True)
row0 = ["user00","123456",'123456',"user00@163.com"]
 #生成第一行
for i in range(0,len(row0)):
    sheet1.write(0,i,row0[i])  # 顺序为x行x列写入第x个元素
f.save('e:\dd.xls')

======输出结果======
在e:根目录下创建了一个心的excel工作簿,数据也被写入其中

读取文件

先把文件转码称为csv格式,最好把文字格式转为utf8格式,然后下面代码读取文件

import csv  #导入csv文件
with open(r"C:\python\haha.csv","r",encoding="utf-8") as f:#(as 后跟的别名)
    data=csv.reader(f)
    for i in data:
        print(i)
        # print(i[0])索引求其中的元素
        # print(i[1])
        # print(i[2])

在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王大兴的王兴

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值