IO指的是在python中实现输入和输出的操作。
在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
Python提供了input函数从标准输入设备上读入一个字符串,默认的标准输入是键盘,常见的语法结构如下:
choice = input("请输入你的选项:")
num = int(input("请输入一个数字:"))
Python 提供了必要的函数对文件进行IO操作,你可以用通过open方法创建文件对象,并对文件对象进行读写操作。
你必须先用Python内置的open()函数打开一个文件,创建一个file对象,相关的方法才可以调用它进行读写
file object = open(file_name ,mode,encoding)
#文件流对象名:f = open(filename,mode)
#要保证你文件字符集和读取的字符要要一致
f = open(r"e:\xxx.txt","r",encoding="utf-8")
mode是文件的读写方式:
对文件的操作,基本上就是对文件的读写操作。
读取文本文件中的数据:
#文件流对象名: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()方法实现一个简易的小说阅读器:
f = open(r"e:\xiaoshuo.txt","r",encoding="utf-8")
for line in f.readlines():
print(line)
time.sleep(1)
f.close()
往文本文件中写入数据:
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()
使用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()方法。
文本文件存储数据:
username,password,repassword,email
user1,123456,123456,[email protected]
user2,123456,123456,[email protected]
user3,123456,123456,[email protected]
user4,123456,123456,[email protected]
user5,123456,123456,[email protected]
user6,123456,123456,[email protected]
user7,123456,123456,[email protected]
user8,123456,123456,[email protected]
user9,123456,123456,[email protected]
user10,123456,123456,[email protected]
import csv
#现在要做的就是对csv文件的读操作
with open(r"e:\dd.csv","a",encoding="utf-8") as f:
data = csv.reader(f)
#<_csv.reader object at 0x000001B4E939B518>
# ss
# print(type(data))
for i in data:
print(i)
=输出结果=====
[‘username’, ‘password’, ‘repassword’, ‘email’]
[‘user1’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user2’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user3’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user4’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user5’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user6’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user7’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user8’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user9’, ‘123456’, ‘123456’, ‘[email protected]’]
[‘user10’, ‘123456’, ‘123456’, ‘[email protected]’]
import csv
#现在要做的就是对csv文件的写操作
with open(r"e:\dd.csv","a",encoding="utf-8",newline='') as f:
# 往csv文件中写入一行数据
dda = ['user11', '123456', '123456', '[email protected]']
csv_writer = csv.writer(f,dialect="excel")
csv_writer.writerow(dda)
# 往csv文件中写入多行数据
csv_writer.writerows([['user11', '123456', '123456', '[email protected]'],['user12', '123456', '123456', '[email protected]']])
newline=’’,主要是避免写入数据之后,有多余的换行
使用xlrd、xlwt模块对excel文件中的数据进行读写。
window+R打开cmd窗口,执行下面命令完成xlrd、xlwt的安装
pip3 install xlrd
pip3 install xlwt
将上文的数据做到excel文件中,作为数据源
import xlrd
#f作为文件对象
f = xlrd.open_workbook(r"e:\dd.xlsx")
#
# 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))
import xlwt
#创建工作簿
f = xlwt.Workbook(encoding="utf-8")
# #创建sheet
sheet1 = f.add_sheet(r'sheet1',cell_overwrite_ok=True)
row0 = ["user00","123456",'123456',"[email protected]"]
#生成第一行
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])