利用with语句
open()
write()
writelines() 写的是列表不用手动关闭,系统自动关闭,然后释放资源。with open(路径)as f
f 对象的名字 自定义的名字with open("D:\data.txt","w")as f:f.write("12334567\n")f.writelines(["abc\n","def\n"])read() 返回一个字符串
readlines() 读取多行返回的是一个列表
readline() 读取一行Eg1:
print(f.readline())
print(f.read())
print(f.readlines())
f.close()
结果:
12334567abc
def[]Eg2:
f = open("D:\data.txt","r")
print(f.readline())
print(f.readlines())
print(f.read())
f.close()
结果:12334567['abc\n', 'def\n']
改正代码:
1.路径前加上r 避免转义
2.加上编码方式
with open(r"D:\data.txt","r",encoding="utf-8")as f:for s in f.readlines():print(s,end=" ")结果
12334567abcdef
获取系统的默认编码
import sys
print(sys.getdefaultencoding())结果:
utf-8
二进制文件读写
写
模式: wb
写的方式前面加 b
with open(r"D:\data1.txt","wb")as f:f.write(b"123456\n")读with open(r"D:\data1.txt","rb")as f:b =f.read()print(b)结果:
b'123456\n'
随机文件读写
模式:w+bwith open(r"D:\data1.txt","w+b")as f:f.write(b"123456\n")读取:
模式 : r+b
with open(r"D:\data1.txt","r+b")as f:b =f.read()print(b)
IO模块
内存文件的操作:
在内存中创建临时文件,进行读取在IO模块中提供了两个对象用于二进制文件和文本文件内内存里面的操作StringIOfrom io import StringIO
f = StringIO("hello\n hi\n Goodbye")
for s in f:print(s)结果:
hellohiGoodbye========================
BytesIOfrom io import BytesIO
f = BytesIO()
f.write("中国".encode('utf-8'))
f.seek(0)
s = f.read()
print(s)结果:
b'\xe4\xb8\xad\xe5\x9b\xbd'另一种方法:
from io import BytesIO
f = BytesIO()
f.write("中国".encode('utf-8'))
print(f.getvalue())运行结果:
b'\xe4\xb8\xad\xe5\x9b\xbd'
压缩
gzipEg:
import sys,gzipfilename = sys.argv[0]
filenamezip = filename+ '.gz'
with gzip.open(filenamezip,'wt') as f:for s in open(filename,'r'):f.write(s)for s in gzip.open(filenamezip,'r'):print(s)python test.py=================结果:b'import sys,gzip\r\n'
b'\r\n'
b'filename = sys.argv[0]\r\n'
b"filenamezip = filename+ '.gz'\r\n"
b"with gzip.open(filenamezip,'wt') as f:\r\n"
b" for s in open(filename,'r'):\r\n"
b' f.write(s)\r\n'
b'\r\n'
b"for s in gzip.open(filenamezip,'r'):\r\n"
b' print(s)\r\n'
CSV
逗号分隔文本格式。用来做excel和数据库的数据的导入和导出创建:
方式1:
excel表格创建
数据之间的逗号必须是英文逗号
![在这里插入图片描述](https://img-blog.csdn.net/20181025162957972?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0wxNTU4MTk4NzI3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
只能有一个sheet
![在这里插入图片描述](https://img-blog.csdn.net/20181025163104593?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0wxNTU4MTk4NzI3/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70)
CSV的读取
csv.reader 对象import csv
def csv1(path1):with open(path1,newline="") as f:f_csv = csv.reader(f)headers = next(f_csv)print(headers)for row in f_csv:print(row)if __name__ == '__main__':csv1("D:\info.csv")['姓名,性别,年龄']
['Alice,女,25']
CSV的写入
writerow() 写入一行数据
writerows() 写入多行数据
dialect :只读文件import csv
def csv2(path1):headers = ['学号','姓名','班级','语文']rows = [('201895444','张三','1602','12'),('201895423','张一','1603','23'),('201895445','张四','1604','24')]with open(path1,newline="") as f:f_csv = csv.writer(f)f_csv.writerow(headers)f_csv.writerow(rows)
if __name__ == '__main__':csv2("D:\info.csv")