热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

python17文件操作IO模块压缩

利用with语句open()write()writelines()写的是列表不用手动关闭,系统自动关闭,然后释放资源。withopen(路径)asf

利用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表格创建
数据之间的逗号必须是英文逗号

在这里插入图片描述

只能有一个sheet
在这里插入图片描述

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")


推荐阅读
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • Java容器中的compareto方法排序原理解析
    本文从源码解析Java容器中的compareto方法的排序原理,讲解了在使用数组存储数据时的限制以及存储效率的问题。同时提到了Redis的五大数据结构和list、set等知识点,回忆了作者大学时代的Java学习经历。文章以作者做的思维导图作为目录,展示了整个讲解过程。 ... [详细]
  • 本文讨论了一个关于cuowu类的问题,作者在使用cuowu类时遇到了错误提示和使用AdjustmentListener的问题。文章提供了16个解决方案,并给出了两个可能导致错误的原因。 ... [详细]
  • 关键词:Golang, Cookie, 跟踪位置, net/http/cookiejar, package main, golang.org/x/net/publicsuffix, io/ioutil, log, net/http, net/http/cookiejar ... [详细]
  • EPPlus绘制刻度线的方法及示例代码
    本文介绍了使用EPPlus绘制刻度线的方法,并提供了示例代码。通过ExcelPackage类和List对象,可以实现在Excel中绘制刻度线的功能。具体的方法和示例代码在文章中进行了详细的介绍和演示。 ... [详细]
  • Java如何导入和导出Excel文件的方法和步骤详解
    本文详细介绍了在SpringBoot中使用Java导入和导出Excel文件的方法和步骤,包括添加操作Excel的依赖、自定义注解等。文章还提供了示例代码,并将代码上传至GitHub供访问。 ... [详细]
  • Annotation的大材小用
    为什么80%的码农都做不了架构师?最近在开发一些通用的excel数据导入的功能,由于涉及到导入的模块很多,所以开发了一个比较通用的e ... [详细]
  • 本文介绍了一个Java猜拳小游戏的代码,通过使用Scanner类获取用户输入的拳的数字,并随机生成计算机的拳,然后判断胜负。该游戏可以选择剪刀、石头、布三种拳,通过比较两者的拳来决定胜负。 ... [详细]
  • 开发笔记:加密&json&StringIO模块&BytesIO模块
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了加密&json&StringIO模块&BytesIO模块相关的知识,希望对你有一定的参考价值。一、加密加密 ... [详细]
  • 本文介绍了OC学习笔记中的@property和@synthesize,包括属性的定义和合成的使用方法。通过示例代码详细讲解了@property和@synthesize的作用和用法。 ... [详细]
  • 在重复造轮子的情况下用ProxyServlet反向代理来减少工作量
    像不少公司内部不同团队都会自己研发自己工具产品,当各个产品逐渐成熟,到达了一定的发展瓶颈,同时每个产品都有着自己的入口,用户 ... [详细]
  • 个人学习使用:谨慎参考1Client类importcom.thoughtworks.gauge.Step;importcom.thoughtworks.gauge.T ... [详细]
  • 本文详细介绍了Java中vector的使用方法和相关知识,包括vector类的功能、构造方法和使用注意事项。通过使用vector类,可以方便地实现动态数组的功能,并且可以随意插入不同类型的对象,进行查找、插入和删除操作。这篇文章对于需要频繁进行查找、插入和删除操作的情况下,使用vector类是一个很好的选择。 ... [详细]
  • 导出功能protectedvoidbtnExport(objectsender,EventArgse){用来打开下载窗口stringfileName中 ... [详细]
  • 解决.net项目中未注册“microsoft.ACE.oledb.12.0”提供程序的方法
    在开发.net项目中,通过microsoft.ACE.oledb读取excel文件信息时,报错“未在本地计算机上注册“microsoft.ACE.oledb.12.0”提供程序”。本文提供了解决这个问题的方法,包括错误描述和代码示例。通过注册提供程序和修改连接字符串,可以成功读取excel文件信息。 ... [详细]
author-avatar
单纯只是一2502904797
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有