导航:首页 > 编程语言 > python处理文件内容

python处理文件内容

发布时间:2023-10-01 05:24:25

A. python如何读取文件的内容

# _*_ coding: utf-8 _*_

import pandas as pd

# 获取文件的内容

def get_contends(path):

with open(path) as file_object:

contends = file_object.read()

return contends

# 将一行内容变成数组

def get_contends_arr(contends):

contends_arr_new = []

contends_arr = str(contends).split(']')

for i in range(len(contends_arr)):

if (contends_arr[i].__contains__('[')):

index = contends_arr[i].rfind('[')

temp_str = contends_arr[i][index + 1:]

if temp_str.__contains__('"'):

contends_arr_new.append(temp_str.replace('"', ''))

# print(index)

# print(contends_arr[i])

return contends_arr_new

if __name__ == '__main__':

path = 'event.txt'

contends = get_contends(path)

contends_arr = get_contends_arr(contends)

contents = []

for content in contends_arr:

contents.append(content.split(','))

df = pd.DataFrame(contents, columns=['shelf_code', 'robotid', 'event', 'time'])

(1)python处理文件内容扩展阅读:

python控制语句茄团

1、if语句,当条件成立时运行语句块。经常与else, elif(相当于else if) 配合使用。

2、for语句,遍历列表、字符串、字典、集合等迭代器,依次处理迭代器中的每个元素。

3、while语句,当条件为真时,循环运行语句块。

4、try语句,与except,finally配合使用处理在程序运行中出现的异常情况。

5、class语句,用于定义顷纳拍类型。

6、def语句,用于定义函数和类型的方法。雀羡

B. Python Word文档处理 上篇:python-docx

某天我收到一个需求:希望能够用python对word文档进行一些处理,比如更换一些文字以及添加批注。

简单搜索后,我发现 python-docx 是一个处理docx文档的常用python库,因此我打算用它来进行进一步开发。

官方文档 提供了一个简单的示例

python-docx 将文档抽象为document对象、paragraph对象以及run对象,提供了围绕这些对象进行简单处理的API

然而在文档中并没有出现关于批注操作的部分,我在搜寻 一些文章 后发现了在某个 issue 中提及了添加批注相关信息,然而还是没有得到具体的解决办法

docx文档底层是由XML文件组成的

我们可以将一个 xx.docx 文件的后缀名改为 .rar 然后将其手动解压,可以得到下面这些文件

在诸多文件当中主要用到的是 document.xml 文件,这里保存了文档的内容

打开一份 document.xml 文件,抛开header、footer、table以及其他特殊项,去掉样式等修饰项,一份朴素的docx文档主要可以分为三个部分:paragraph、run、text

paragraph即段落,就是我们在word当中看到的一段。text即文本,就是真实的内容。run比较抽象,我们可以将其理解为片段,即语句的切分。

为了更好地理解run是什么,打开一篇word文档定位其中一句话

让我们看看这篇文档解压之后的 document.xml 文件中对应的部分

OK,我们可以看到原本完整的一句话在word中被拆分成了许多个 <w:r> 标签,这就是 run ,word切分 run 的规则很多,有的根据标点符号,有的根据中文分词,句子中如果存在不同样式的字词也会单独切分出来,因此我们很难预估一句话究竟会被分成几个片段。

在issue中搜索comment关键字发现在一个 merge request 上已经给出了添加批注的解决方案,可以通过 paragraph 对象上的 add_comment 方法给一个段落添加批注

但这还是不符合我的需求,我的目标是精准添加到某个词或者短语上

打开 这个贡献者的源码 进行研究

其实就是在P标签内插入comment标签引用,同时添加comment标签到xx文件

同理我们可以在r标签内插入comment标签引用,同时添加comment标签到xx文件,这样就能实现给特定词添加批注的需求了

C. Python 自动化处理 Yaml 文件-



Yaml文件内容—示例1:

Yaml文件内容—示例2:

从上述示例文件内容可以看到 Yaml 数据结构:

1). 对象:键值对的集合(简称 "映射或字典")

例如:family 和 address 这两个对象后面分别有对应的键值对集合。

2). 键值对用冒号 “:” 结构表示,冒号与值之间需用空格分隔

例如:

family 对象中的 key 为 name 与其对应的 value 值 Smile_Family 之间是使用空格分隔的。

address 对象中的 key 为 province 与其对应的 value 值 BeiJing 之间是使用空格分隔的。

3). 数组:一组按序排列的值(简称 "序列或列表"),数组前加有 “-” 符号,符号与值之间需用空格分隔

例如:

parents 中的 John 和 Jane

children 中的 Lily 和 Frank

4). 纯量(scalars):单个的、不可再分的值。例如:字符串、bool值、整数、浮点数、时间、日期、null等

None值可用null也可用 ~ 表示;


yaml文件内容如下:

Python解析输出为:

这个例子输出一个字典,其中value包括所有基本类型

Yaml文件内容如下:

Python解析输出为:

Yaml文件内容如下:

Python输出为:

如果字符串没有空格或特殊字符,不需要加引号,但如果其中有空格或特殊字符,则需要加引号。

这里要注意单引号和双引号的区别:

单引号中的特殊字符转到 Python 会被转义,也就是到最后是原样输出;

双引号不会被 Python 转义,到最后是输出了特殊字符;

Yaml文件内容如下:

Python输出:


D. Python其实很简单 第十五章 文件操作

在各种变量中保存的数据都是临时的,随着程序运行结束都会丢失。要做到数据长期有效,必须建立在磁盘中建立文件,将数据输入到文件中并保存。需要获取数据时需要打开文件读取。

而我们自己建立的程序都是应用程序,从本质上讲,应用程序是无法直接操作计算机的硬件的,譬如读写磁盘中文件,这就需要调用操作系统中的相应命令。接下来我们使用的Python内置函数open()、write()都是通过调用操作系统的相关命令才实现文件读写的,至于其中的细节,我们就不需要考虑了。

15.1创建和打开文件

在Python 中创建或打开文件,实际上是建立一个对象,该对象通过调用内置的open()函数创建或打开一个文件。

语法:

file object = open(filename [, mode][, buffering])

参数说明如下:

filename:file_name变量是一个包含了你要访问的文件名称的字符串值;

mode:mode决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读(r)。

Buffering:如果buffering的值被设为0,就不会有寄存;如果buffering的值取1,访问文件时会寄存行;如果将buffering的值设为大于1的整数,表明了这就是的寄存区的缓冲大小;如果取负值,寄存区的缓冲大小则为系统默认。

mode参数的参数值及说明

对于其中最难区别的r、r+、w、w+、a、a+几个参数的区别总结如下,要特别注意指针的位置:

下面举例说明open( )函数的使用方法。

例1:

>>> file=open(Ƈ.py')

如果文件“1.py”存在,则可以打开此文件;如果文件“1.py”不存在,则会出现如下提示:

Traceback (most recent call last):

File " ", line 1, in

file=open(Ƈ.py')

FileNotFoundError: [Errno 2] No such file or directory: Ƈ.py'

例2:

>>> file=open(Ɗ.py',’a+’)

虽然文件“4.py”不存在,但运行并未出现错误,参见上表,“a+”的含义是以读写模式打开文件,如果该文件已经存在,新内容将以追加方式写入;如果该文件不存在,则新建文件用于写入。查看文件夹,发现已经生成了一个新的文件4.py。

例3:

file=open('python.png','rb')

print(file)

运行结果:

这就是说,虽然Python可以打开一个图片格式的文件,但print()并不能将其输出,还需要第三方库中模块的相应方法去处理,如PIL中的open()f方法。

例4:

file = open("f.txt", "w",encoding='utf-8')

# 以只写模式打开文件f.txt,编码方式为utf-8

print( "文件名: ", file.name) # 输出文件名

print( "是否已关闭 : ", file.closed) # 文件是否打开

print( "访问模式 : ", file.mode) # 文件访问模式

运行结果:

文件名: f.txt

是否已关闭 : False

访问模式 : w

例5:


15.2关闭文件

打开文件使用后要及时关闭,以免造成不必要的破坏,同时也可以释放内存。在Python中使用close()方法可以关闭文件。

语法格式:

file.close()

其中,file为文件对象。


15.3 with语句

with 语句适用于对资源进行访问的场合,确保不管使用过程中是否发生异常都会执行必要的“清理”操作,释放资源,比如文件使用后自动关闭、线程中锁的自动获取和释放等。

with语句的语法格式如下:

with expression as target:

with-body

其中,expression用于指定一个表达式,譬如打开文件的open()函数。target用于指定一个变量,并且将expression的结果保存到该变量中,譬如文件对象file。with-body用于指定with语句体,譬如一些文件操作的相关语句,如果没有要执行的语句体,则直接用pass语句代替。

假设python当前目录下存在一个test.txt文件,其内容如下:

Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

Python是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

Python是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发。

举例如下:

with open('test.txt','r',encoding='utf-8') as file:

line=file.readline() # readline()方法可以读取文件一行数据,接下来就会讲到。

print(line)

运行结果如下:

Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

而此时,我们给该段代码with语句之外再增加一个读取文件的语句,代码如下:

with open('test.txt','r',encoding='utf-8') as file:

line=file.readline()

print(line)


line2=file.readline()

print(line2)

发现出现了如下错误提示:

Traceback (most recent call last):

File "C:/Users/zym/AppData/Local/Programs/Python/Python39/3.py", line 5, in

line2=file.readline()

ValueError: I/O operation on closed file.

意思是要读取的文件已经被关闭了。

由此可知,当with语句运行结束后,被打开的test.txt文件就自动关闭了。

15.4读取文件

在Python 中读取文件的方法有:

1、读取指定个数的字符

格式如下:

File.read([size])

其中,file为打开的文件对象。size为可选参数,可以指定要读取的字符个数,省缺表示读取所有内容。

在调用read()方法读取文件内容时,文件必须是以r(只读)或者r+(读写)方式打开。

如:

with open('test.txt','r',encoding='utf-8') as file:

txt=file.read() (或txt=file.read(10))

print(txt)

将读取、输出test.txt文件的全部内容(或前10个字符)。

2、移动文件的指针

对于刚打开的文件,文件指针总是指向文件头的。也可以通过seek()方法将文件的指针移动到新的位置。

格式如下:

file.seek(offset[,whence])

其中,file表示已经打开的文件对象;offset用于指定移动的字符个数;whence表示从哪个位置起始计算个数,其值为0表示从文件头开始计算,其值为1表示从当前位置开始计算,其值为2表示从文件尾开始计算,默认值为0。

例如:

with open('test.txt','r',encoding='utf-8') as file:

string=file.read(9)

print('取9个字符: '+string)

file.seek(2) #指针从文件头开始移动2个字符

string=file.read(9) #从当前位置读取10个字符

输出结果:

取9个字符:

Python是一种

取9个字符:

thon是一种解释


而下面的代码会抛出错误:

with open('test.txt','r',encoding='utf-8') as file:

file.seek(2,1) #指针从当前位置开始移动2个字符

string=file.read(10) #从当前位置读取10个字符

print('取10个字符: '+string)

错误提示为:

Traceback (most recent call last):

File "C:.py", line 7, in

file.seek(2,1) #指针从当前位置开始移动2个字符

io.UnsupportedOperation: can't do nonzero cur-relative seeks

原因在于,必须使用b模式(即rb)打开文件,才能使用whence参数。但是,b模式(二进制)不适合文本文件。对于test.txt这样的文本文件,为了解决通过改变指针读取任意位置字符,可以采用加一个位置变量的方法来存储指针的值。

例如:

with open('test.txt','r',encoding='utf-8') as file:

#utf-8汉字与英文字符都占一个字符

string='' #设置一个空字符串

pointer=0 #当前指针为0

str1=file.read(6) #读取6个字符

pointer+=6 #指针变量后移6个字符

string+=str1 #string用来存放已读取的字符

print('取6个字符: ',str1)

file.seek(pointer) #指针从文件头开始移动2个字符

str1=file.read(8) #从当前位置读取10个字符

pointer+=8 #指针跳过已读取的字符

string+=str1

print('再取8个字符: ',str1)

print('所有读取的字符: ',string)

print('当前指针所处的位置: ',pointer)

str1=file.read(1)

print('当前指针所处的字符: ',str1)


运行结果如下:

取6个字符:

Python

再取8个字符:

是一种解释型语言

所有读取的字符:

Python是一种解释型语言

当前指针所处的位置:

14

当前指针所处的字符:


3、读取一行数据readline()方法

语法格式:

file.readline()

例:

with open('test.txt','r',encoding='utf-8') as f:

string=f.read(1) # 读取文件的第一个字符

if string != '': # 防止文件为空文件

lineno=0

while True:

line=f.readline()

if line != '':

lineno+=1

print('第'+str(lineno)+'行:'+line,end='')

# 因为每行都有自带的分行符,print()语句不允许换行

else:

break # 出现空行时停止读取

else:

print('要读取的文件为空文件!')

运行结果:

第1行:ython是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

第2行:Python是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

第3行:Python是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

第4行:Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发。

4、读取全部行命令readlines()方法

语法格式:

File.readlines()

该方法与read()方法一样,在调用read()方法读取文件内容时,文件必须是以r(只读)或者r+(读写)方式打开。

例:

with open('test.txt','r',encoding='utf-8') as f:

txt=f.readlines()

print(txt)

运行结果:

['Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。 ', 'Python是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。 ', 'Python是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。 ', 'Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发。 ']

从上面的运行结果可以看出,readlines()方法的返回值为一个字符串行表。所以,也可以以读取列表元素的方法输出。如下所示:

with open('test.txt','r',encoding='utf-8') as f:

txt=f.readlines()

for line in txt:

print(line,end='')

运行结果:

Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

Python是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

Python是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发。

15.5 写入文件内容

语法格式如下:

file.write(string)

其中,file为打开的文件对象,string为要写入的字符串。

写入文件内容时,文件必须以w(可写)或a(追加)模式打开。否则,会抛出如下异常提示:

Traceback (most recent call last):

File "C:.py", line 2, in

f.write('人生苦短,我用Python!')

io.UnsupportedOperation: not writable

关于write()方法的用法举例如下:

with open('test.txt','a',encoding='utf-8') as f:

f.write('人生苦短,我用Python!')

with open('test.txt','r',encoding='utf-8') as f:

txt=f.read()

print(txt)

运行结果:

Python是一种解释型语言: 这意味着开发过程中没有了编译这个环节。类似于PHP和Perl语言。

Python是交互式语言: 这意味着,您可以在一个 Python 提示符 >>> 后直接执行代码。

Python是面向对象语言: 这意味着Python支持面向对象的风格或代码封装在对象的编程技术。

Python是初学者的语言:Python 对初级程序员而言,是一种伟大的语言,它支持广泛的应用程序开发。

人生苦短,我用Python!

可以看出,由于文件的打开方式为a模式(追加模式),写入的内容被写入到文件的末尾。

在Python中,文件操作方法里没有类似于字符串内的计算长度、查找、替换、截取、分隔等方法,为什么没有?原因可能是文件的类型太复杂,譬如说二进制文件,上述操作的意义不大。如果仅仅要对文本文件进行上述操作,完全可以先把文件的内容读取到字符串中,再用相应的字符串函数或方法去操作就可以了。譬如,要将test.txt文件中的字符串‘Python’替换为’PHP’,则可以用如下代码完成:

txt1=''


with open('test.txt','r',encoding='utf-8') as f:

txt1=f.read() #先将文件内容存入字符串txt1中


txt2=txt1.replace('Python','PHP') #将txt1中的'Python'替换为'PHP',并存入txt2


with open('test.txt','w',encoding='utf-8') as f:

f.write(txt2) #将字符串txt2的内容写回到文件中


这里之所以分两步打开文件(第一次为r模式,第二次为w模式),而没有采用一次读写(r+、w+方式),因为那样比较容易出错。实践证明,将文件的读操作和写操作分开其实是非常正确的选择。

E. python对文件的读操作方法有哪些

摘要 1 文件读取全文本操作

阅读全文

与python处理文件内容相关的资料

热点内容
鞋盒怎么做文件夹收纳盒视频 浏览:755
模拟电子技术第四版pdf 浏览:961
解压车贷后gps怎么找 浏览:350
源码数据库怎么配备 浏览:138
知乎程序员小灰 浏览:574
新概念英语第一册书pdf 浏览:8
安卓ans文件怎么打开 浏览:895
选择题改进分治算法的方法有 浏览:110
下载云服务器有什么好处 浏览:23
江苏机架式服务器云主机 浏览:411
linux补全命令 浏览:514
我要打命令 浏览:970
御人pdf 浏览:390
小米手机怎么发送文件夹用qq 浏览:917
找人一起玩用什么app好 浏览:398
程序员最烦的4件事 浏览:485
怎么查ice服务器 浏览:760
excel加密不可以复制 浏览:308
py编译器的键盘输入在哪 浏览:226
云服务器和深度学习 浏览:102