导航:首页 > 编程语言 > python文件读写库

python文件读写库

发布时间:2024-04-17 19:27:44

python对文本文件的读有哪些方法,写有哪些方法

1 文件读取全文本操作
在一定场景下我们需要把文本全部内容读取出来,进行处理。python提供三种函数读取文件,分别是read readline readlines,
read():读取文件的全部内容,加上参数可以指定读取的字符。
readline():读取文件的一行。
readlines():读取文件的所有行到内存中。
不同场景下我们可以选择不同函数对文件进行读取。
1.1 方法一
file_name = input("请输入你要打开的文件的完整路径及名称")
file= open(file_name, "r")
txt=file.read()
# 全文本的处理
file.close()
使用read函数将文件中的内容全部读取,放在字符串变量txt中。这样操作适合于文本较小,处理简单的情况,当文件较大时,这种方式处理时不合适的。一次性读取较大的文件到内存中,会耗费较多的时间和资源。这时候分批处理效果更好。
1.2 方法二
file_name = input("请输入你要打开的文件的完整路径及名称")
file= open(file_name, "r")
txt= file.read(4)
# 文本的处理while txt != ""txt= file.read(4)
# 批量文本处理
file.close()
这种方法适合于分批处理文本信息,每次批量读入,批量处理,不会对内存造成较大的压力。
1.3 方法三
file_name = input("请输入你要打开的文件的完整路径及名称")
file= open(file_name, "r")for line infile.readlines():
# 处理每一行数据
file.close()
这种处理方式适合处理以行为分割特点的文本,并且文本较小,因为这种处理方式需要一次性把文件所有内容读取到内存中。
1.4 方法四
file_name = input("请输入你要打开的文件的完整路径及名称")
file= open(file_name, "r") # 这里的file时文件句柄for line infile:
# 处理每一行数据
file.close()
这种方式和方法三中的区别是分行读入,逐行处理,不会一次性把文件所有内容都读入到内存中,对一些大文件的处理是很有效的。
2 文件写入文本操作
文件写入有两种写入函数和一种辅助支持。
write():向文件中写入一个字符或者字节流
writelines():将一个元素全为字符串的列表写入到文件中 需要注意的是,writelines写入列表元素的时候会把列表元素的内容拼接到一起写入,不会有换行和空格 。
seek(): 辅助写入函数offset偏移量参数代表含义如下
0 - 文件开头
1 - 当前位置
2 - 文件结尾
2.1 方法一
file_name = input("output.txt", "w+")
text= "hello world!"file_name.write(text)
file.close()
2.2 方法二
file_name = input("output.txt", "w+")
list= ["中午","早上","晚上"]
file_name.writelines(list)for line infile:
# 读取写入的数据,这时候发现是没有任何内容的
file.close()
我们增加一行代码就可以读取到写入的文件内容,利用seek()函数调整写操作指针的位置,可以实现写操作之后的正常读取。
file_name = input("output.txt", "w+")
list= ["中午","早上","晚上"]
file_name.readlines(list)
file_name.seek(0) # 调整写的指针到文件的开始位置for line infile:
# 读取写入的数据,这时候会读出一行写入的数据。
file.close()

Ⅱ Python协程之asyncio

asyncio 是 Python 中的异步IO库,用来编写并发协程,适用于IO阻塞且需要大量并发的场景,例如爬虫、文件读写。

asyncio 在 Python3.4 被引入,经过几个版本的迭代,特性、语法糖均有了不同程度的改进,这也使得不同版本的 Python 在 asyncio 的用法上各不相同,显得有些杂乱,以前使用的时候也是本着能用就行的原则,在写法上走了一些弯路,现在对 Python3.7+ 和 Python3.6 中 asyncio 的用法做一个梳理,以便以后能更好的使用。

协程,又称微线程,它不被操作系统内核所管理,而完全是由程序控制,协程切换花销小,因而有更高的性能。

协程可以比作子程序,不同的是,执行过程中协程可以挂起当前状态,转而执行其他协程,在适当的时候返回来接着执行,协程间的切换不需要涉及任何系统调用或任何阻塞调用,完全由协程调度器进行调度。

Python 中以 asyncio 为依赖,使用 async/await 语法进行协程的创建和使用,如下 async 语法创建一个协程函数:

在协程中除了普通函数的功能外最主要的作用就是:使用 await 语法等待另一个协程结束,这将挂起当前协程,直到另一个协程产生结果再继续执行:

asyncio.sleep() 是 asyncio 包内置的协程函数,这里模拟耗时的IO操作,上面这个协程执行到这一句会挂起当前协程而去执行其他协程,直到sleep结束,当有多个协程任务时,这种切换会让它们的IO操作并行处理。

注意,执行一个协程函数并不会真正的运行它,而是会返回一个协程对象,要使协程真正的运行,需要将它们加入到事件循环中运行,官方建议 asyncio 程序应当有一个主入口协程,用来管理所有其他的协程任务:

在 Python3.7+ 中,运行这个 asyncio 程序只需要一句: asyncio.run(main()) ,而在 Python3.6 中,需要手动获取事件循环并加入协程任务:

事件循环就是一个循环队列,对其中的协程进行调度执行,当把一个协程加入循环,这个协程创建的其他协程都会自动加入到当前事件循环中。

其实协程对象也不是直接运行,而是被封装成一个个待执行的 Task ,大多数情况下 asyncio 会帮我们进行封装,我们也可以提前自行封装 Task 来获得对协程更多的控制权,注意,封装 Task 需要 当前线程有正在运行的事件循环 ,否则将引 RuntimeError,这也就是官方建议使用主入口协程的原因,如果在主入口协程之外创建任务就需要先手动获取事件循环然后使用底层方法 loop.create_task() ,而在主入口协程之内是一定有正在运行的循环的。任务创建后便有了状态,可以查看运行情况,查看结果,取消任务等:

asyncio.create_task() 是 Python3.7 加入的高层级API,在 Python3.6,需要使用低层级API asyncio.ensure_future() 来创建 Future,Future 也是一个管理协程运行状态的对象,与 Task 没有本质上的区别。

通常,一个含有一系列并发协程的程序写法如下(Python3.7+):

并发运行多个协程任务的关键就是 asyncio.gather(*tasks) ,它接受多个协程任务并将它们加入到事件循环,所有任务都运行完成后会返回结果列表,这里我们也没有手动封装 Task,因为 gather 函数会自动封装。

并发运行还有另一个方法 asyncio.wait(tasks) ,它们的区别是:

Ⅲ csv文件怎么打开 使用Python读取和写入CSV文件

csv文件本质上是一个文本文件,具体的读取和写入方法有两种:
直接对csv文件进行文件读写操作,每一行是一条记录,按行读取即可,简单代码如下:
with open("XXX.csv","wr") as f:
f.readline()
f.write()
2.使用第三方库中的csv文件读写函数(本质上还是使用python的文件读写方法),如科学计算包pandas包中就有read_csv() to_csv()等函数,其他的一些第三方包里也有,可以自行查询。
两种方法各有优劣,第一种方法的优点就是可控性强,但是代码相对较多,对于python2编码处理很麻烦;第二种方法的优点是代码量小,调用方便,处理编码问题相对容易(在函数中加一个encoding参数即可),但是代码内部比较复杂,可控性较差

Ⅳ Python中的文件读写-理论知识

Python处理两种不同类型的文件:二进制文件和文本文件。了解两者之间的差异很重要,因为它们的处理方式不同。

二进制文件

在正常计算机使用期间使用的大多数文件实际上是二进制文件,而不是文本。比如:Microsoft Word .doc文件实际上是一个二进制文件,即使它只有文本。

二进制文件的其他示例包括:

图像文件,包括.jpg,.png,.bmp,.gif,等。

数据库文件包括.mdb,.frm和.sqlite

文件,包括.doc,.xls,.pdf或者其他文件。

那是因为这些文件都有特殊处理的要求,需要特定类型的软件来打开它。例如,您需要Excel来打开.xls文件,并使用数据库程序来打开.sqlite文件。

文本文件

一方面,没有特定的编码,可以通过没有任何特殊处理的标准文本编辑器打开。但是,每个文本文件都必须遵守一组规则:

文本文件必须是可读的。他们可以(并且经常会)包含许多特殊编码,尤其是在HTML或其他标记语言中,但您仍然可以说出它的含义

文本文件中的数据按行组织。在大多数情况下,每一行都是一个独特的元素,无论是指令行还是命令

此外,文本文件在每行的末尾都有一个看不见的字符,这使文本编辑器知道应该有一个新行。通过编程与这些文件交互时,您可以利用该字符。在Python中,它用“ n” 表示。

在哪里可以找到Python的文件I / O工具

在Python中工作时,您不必担心导入任何特定的外部库来处理文件。Python附带有“文件库”,文件I / O工具和实用程序是核心语言的内置部分。

但是在其他语言(如C ++)中,要处理文件,您必须通过包含正确的头文件来启用文件I / O工具#include <fstream>。如果您使用java编写代码,则需要使用该import java.io.*语句。

使用Python,就没有必要这样做,这是因为Python有一组内置函数,可以处理读取和写入文件所需的所有内容。

Ⅳ 如何用python读excel文件

想要使用python实现对Excel文件的读写,首先需要安装专用的模块(如果你是大牛可以自己编写)xlrd模块。

解压以后启动cmd命令窗口,在其中输入xlrd解压后所在的目录,执行安装命令如图所示(cmd命令的使用请自行网络,本机已经配置好了python环境才可以正常安装)

在IDE环境中导入使用对应的xlrd模块,以eclipse环境为例如图所示
impot xlrd即可

打开Excel文件读取数据的简单示例如图所示:
import xlrd后
(最新的xlrd 0.9.4版本跨平台同时支持.xls和.xlsx)

新手们在使用时会遇到:OSError: Invalid argument:XXX错误,这是文件I/O错误。在windows中要使用正斜杠 (对:C:/bbbb.xlsx,错:('C:\bbbb.xlsx')

6
使用xlrd模块简单读取excel中的sheet和行、列数据。
sheets()[i],row_values(i),col_values(i)

Ⅵ python哪些标准库

标准库比较多 功能也不同:
标准库
sys
系统相关的参数和函数。 sys 库一般用来访问和修改系统相关信息,比如查看 python 版本、系统环境变量、模块信息和 python 解释器相关信息等等。
os
操作系统接口模块。这个库提供了访问操作系统相关依赖的方式,比如输入输出操作、读写操作、操作系统异常错误信息、进程线程管理、文件管理、调度程序等等。
re
正则表达式操作。这个库是我喜欢并且经常会用到的库,在对大量字符串进行处理的时候用正则表达式是最快速有效的方式,但是正则表达式的学习曲线较高,有兴趣的朋友可以访问这个网站学习。
math
数学函数库。 math 库提供了对 C 语言标准定义的数学函数访问,比如数论(Number-theoretic)的各种表示方法、幂和对数函数(Power and logarithmic functions)、三角函数(Trigonometric functions)、常量圆周率(π)和自然常数(e)等等。
random
生成伪随机数。
伪随机数与随机数(真随机数)不同的是执行环境,随机数是真实世界中通过物理过程实践得出结论,而伪随机数是通过计算机的特定算法生成的数,所以这个过程是可预测的、有规律的,只是循环周期较长,并不能与现实场景相切合。
random库提供生成随机数,可以模拟现实世界中随机取数、随机抽奖等等。
logging
日志记录工具。这个库提供了对应用程序和库函数的日志记录,日常开发中我们经常需要通过日志打印出当前程序的运行状态,实时查看可能出现的堆栈异常和错误信息。
json
Json 编码和解码器。 json 库提供了对 json 数据的支持,日常开发中我们做前后端分离需要对传输数据 json 进行序列化和反序列化操作,以保证对数据的完整性和有效性,而序列化和反序列化其实就是编码和解码的过程。
pickle
Python 对象序列化库。 pickle 库支持对 python 对象进行序列化和反序列化操作,当我们需要将处理好的对象保存到文件或数据库中时,就可以将其序列化成二进制数据,从而更好的保存起来。
shelve
Python 对象持久化。简单的数据存储方案。
socket
底层网络接口。 socket(套接字) 库提供了标准的BSD(伯克利套接字) Socket API,可以通过访问底层操作系统 Socket 的相关接口进行网络通讯。
datetime
基本日期和时间类型库。该库提供了各种简单和复杂的方式处理日期和时间,日常我们会用时间测算时间消耗、复杂度,对存储的创建时间和修改时间也需要进一步说明,对计时器的描述和控制也需要用到该库。
hashlib
安全哈希和消息摘要。摘要算法 其实就是对某些数据进行加密(不可逆的加密算法),因为被加密的数据无法破解,所以就能防止被篡改。常见的摘要算法有 MD5、SHA1,一般我们会用 MD5 对用户口令进行加密,防止盗用后被轻易破解;而 SHA1 与 MD5 类似,但是 SHA1 会产生更长的长度,也更安全,但是算法的复杂性通常伴随着存储空间和时间的消耗。要说比SHA1更长的字符长度,还有 SHA224、SHA256、SHA384 和 SHA512,看名字就能知道。
大家都知道无论算法生成的字符长度如何都有可能发生碰撞(被破解),这是不可避免的,所以具体场景具体情况而定。
configparser
配置文件解析器。 configparser 库可以轻松定制配置文件,通过解析配置文件的信息我们就可以全局访问相关配置。
urllib
URL 处理模块。 urllib 库集成了处理 URLs(统一资源定位符)的各种模块:
URL urllib.request URL robots.txt urllib 库对访问网络有很好的支持,提供了对数据的访问和处理、文件的上传和下载、记录 cookie 和 session 等等。
itertools
为高效循环而创建迭代器的函数。 itertools 库也是经常需要用到,当我们要对某些数进行 for-in 时就需要先将其处理成一个可迭代对象,之后我们才能进行遍历操作。
collections
容器数据类型库。 collections 库提供了对所有容器数据类型的支持,包括 dict, list, set 和 tuple。我们可以用此库对不同数据类型进行操作,常有的函数方法有这些:
namedtuple() 创建命名元组子类的工厂函数 deque 类似列表(list)的容器,实现了在两端快速添加(append)和弹出(pop) ChainMap 类似字典(dict)的容器类,将多个映射集合到一个视图里面 Counter 字典的子类,提供了可哈希对象的计数功能 OrderedDict 字典的子类,保存了他们被添加的顺序 defaultdict 字典的子类,提供了一个工厂函数,为字典查询提供一个默认值 UserDict 封装了字典对象,简化了字典子类化 UserList 封装了列表对象,简化了列表子类化 UserString 封装了列表对象,简化了字符串子类化 functools
高阶函数和可调用对象上的操作。该库主要调用高阶函数,是常规函数的一种补充。目前库中包含以下几种函数:
cmp_to_key lru_cache total_ordering partial partialmethod rece singledispatch update_wrapper wraps threading
线程并行库。 threading 库支持线程和多线程的操作,针对多线程并发的问题可以给数据加同步锁,一次只能让一个线程处理数据,从而避免出现数据读写混乱。
在 CPython 解释器上,因为GIL(全局解释器锁)锁机制的存在的,被设计成线程安全,所以同一时间只能执行一个线程,这就导致了多线程不能发挥出计算机的多核特性。
multiprocessing
进程并行库。 multiprocessing 库与 threading 库很类似,不同的是进程库可以创建子进程避开 GIL,从而弥补线程库存在的劣势和发挥计算机的多核特性。
timeit
测量小代码片段的执行时间。此库主要用来计算运行代码的时间消耗,支持多种方式传入参数。
atexit
退出处理器。当处理一个函数需要立马退出时可以使用该库。
abc
抽象基类。 abc 库定义抽象基类,以便其他类派生出新类。比如 collections 容器库中就有此派生出的 collections.abc 类,派生出来的类可以进一步实现。
asyncio
异步IO库。 asyncio 库是一个用 async/await 关键字编写并发的库,为多个异步框架提供基础功能,能够实现高性能的网络、Web服务器、数据库连接和分布式任务队列等。

浅层和深层复制操作。 库提供对对象的拷贝,我们都知道要制作对象副本,是无法通过简单值传递创建新变量的方式做到,因为新变量所指向的内存空间依旧是原对象本身,所以对新变量进行任何操作都会改变原对象。那么, 库就提供了制作对象副本的各种方法,会开辟一个新的内存空间存放副本对象,修改操作不会对原对象有任何干预。
csv
csv(Comma Separated Values)文件读写库。此库支持以纯文本的形式存储表格数据(数字和文本)。
operator
标准运算符替代函数库。此库是将 python 自有的运算符作为有效函数,比如表达式 x+y 可以用函数 operator.add(x, y) 表示;比如表达式 a*b 可以用函数 operator.mul(a, b) 表示,等等。
enum
枚举库。 enum 库支持创建枚举类来存储大量同类型的不可变常量,以便其他函数调用。创建出来的枚举类是可迭代对象,所以可以用 for-in 枚举出所有常量。
heapq
堆队列算法。这个模块提供了堆队列算法的实现,也称为优先队列算法。优先队列中的每个元素都有各自的优先级,优先级最高的元素最先得到服务。所以当我们要求前n最大/最小值的时候就可以用此算法来实现, heapq 库中也提供了相应函数实现。
http
HTTP 模块。 http 模块是一个包,收集了多个处理超文本传输协议的模块:
urllib.request http 模块通过 http.HTTPStatus 枚举定义了HTTP状态码 以及相关联消息。
profile、pstats
性能分析工具。 profile 模块提供了 profile 和 cProfile 两种不同实现的性能分析工具,可用来描述程序各个部分的执行时间和频率,统计后的信息可以通过 pstats 模块保存并使用。
ssl
TLS/SSL(传输安全协议)。此模块提供对安全协议的支持,通过应用上下文,可将 TLS(传输层安全性协议)或其前身 SSL(安全套接层)支持安全协议,能为互联网通信提供安全和数据完整性保障。一般 HTTPS 协议都支持 TLS/SSL 加密。
unitest
单元测试框架。 unitest 库常用于单元测试,受到 JUnit 和其他主流测试库的启发, unitest 库的功能和函数与它们有着相似的风格。
uuid
UUID库。 uuid 库主要用途是生成随机字符串,库中有多个版本的 UUID 对象方法,比如版本 1、3、4 和 5 的 uuid1() 、 uuid3() 、 uuid4() 和 uuid5() 。需要注意的是,如果要生成随机字符串,可以使用 uuid1() 和 uuid4() ,但是 uuid1() 会存在隐私风险,因为生成的原理里边包含用户访问计算机的网络地址,而 uuid4() 是通过随机字符生成。
希望可以帮助到你。

阅读全文

与python文件读写库相关的资料

热点内容
莱阳设计图纸加密价格 浏览:680
王者尝试连接服务器是什么意思 浏览:396
有云服务器可以做穿墙吗 浏览:187
安卓如何彻底删除浏览器 浏览:204
什么橙APP买吃 浏览:328
如何管理服务器帐号 浏览:839
linuxgenymotion 浏览:962
董车长app是干什么的 浏览:832
百度输入法双拼方案文件夹 浏览:380
cad中生成面的命令 浏览:758
clp在单片机中是什么意思 浏览:146
还珠格格韩国源码 浏览:892
linuxpostgresql配置 浏览:873
云服务器如何挂机赚钱 浏览:550
null是java关键字 浏览:689
看过读过听过是什么APP 浏览:835
java判断数据是否存在 浏览:16
一巴掌解压图片 浏览:977
自己搭建的服务器如何安全 浏览:754
miui源码公开 浏览:448