Python学习之文件操作

文件操作

说明:本blog绝大部分内容来自于Python数据分析与可视化(清华大学出版社,魏伟一,李晓红),仅用于 自己学习使用。

文件处理过程

(1)打开文件:open()函数
(2)读取/写入文件:read()、readline()、readlines()、write()等
(3)对读取到的数据进行处理
(4)关闭文件:close()

一.open()函数

file_object=open(file_name[,access_mode=“r”,buffering=-1])
file_object: 打开的文件对象;
file_name: 要打开文件名的绝对路径/相对路径的字符串,包含路径名及拓展名;
access_mode: 可选参数,打开模式,默认r(只读),此外还有w(只写)和a(追加);
buffering: 待打开文件的缓冲模式

二.数据的读取

方法功能
read([size])读取文件所有内容,返回类型为字符串;参数size表示读取的数量,以byte为单位,可省略
readline([size])读取文件一行内容,返回类型为字符串;若定义了size则读出一行的一部分内容
readlines([size])读取所有的行到列表中,其中每一行即为list的一个成员,[line1,line2,…linen],参数size表示读取内容的总长

在这里插入图片描述
eg1:读取txt文件
书中代码:

file=open("泰戈尔的诗.txt",mode='r')
content=file.read()
print(content)
file.close()

原本按照书中这样写,运行却出现了两个问题:
①读取不到文件,因为没有保存到python我所指定的路径下,所以出现了读取失败的情况;
②添加到指定路径下后,又出现’gbk’ codec can’t decode byte 0x80 in position 92: illegal multibyte sequence错误,查阅了一下,知道了是因为文件的编码问题引起的,需要添加encoding=‘UTF-8’。
修改后:

file=open("泰戈尔的诗.txt",mode='r',encoding='UTF-8')
content=file.read()
print(content)
file.close()

运行结果:
在这里插入图片描述
eg2:读取txt文件时指定读取数量

file=open("泰戈尔的诗.txt",mode='r',encoding='UTF-8')
content=file.read(10)#设置读取内容的长度size
print(content)
file.close()
print(type(content))

运行结果:
在这里插入图片描述
eg3:按行读取文件

file=open("泰戈尔的诗.txt",mode='r',encoding='UTF-8')
content=file.readlines()
print(content)
file.close()
print(type(content))

运行结果:
在这里插入图片描述

注:
①readlines()读取后得到的是每行数据组成的列表,一行样本数据全部存储为一个字符串,换行符也未去掉
②每次用完文件后,都要关闭文件,否则文件就会一直被Python占用,不能被其他进程使用;
③可以使用with open() as f 语句来解决②中的问题,它会在操作后自动关闭文件。

三.读取CSV文件

CSV文件:字符分隔值(Comma Separated Values,CSV)文件,因为分隔符除了是逗号,还可以是制表符.它是一种常用的文本格式,用于存储表格数据,包括数字或字符。

CSV文件的特点:
①纯文本,使用某个字符集,例如ASCII、Unicode或GB2312;
以行为单位读取数据,每行为一条记录
而每条记录又被分隔符分隔,成为字段
④对于每条记录,都有同样的字段序列。

Python中内置了csv模块,import csv之后就可读取CSV文件了
eg:读取CSV文件
关于创建csv文件,首先在excel中完成内容的撰写,然后另存为csv格式,最后将其保存到python运行的路径中,方便程序运行时读取。
在这里插入图片描述

import csv
with open("student.csv","r") as f:
     reader=csv.reader(f)
     rows=[row for row in reader]
for item in rows:
    print(item)

运行结果:
在这里插入图片描述

四.文件写入与关闭

1.文件的写入

①使用write()函数,用于向文件中写入指定字符串,同时需要将open()函数中文件打开的参数设置为mode=“w”
②write()是逐次写入,writelines()可将一个列表中所有的数据一次性写入文件;
③如果有换行需要,则要求在每条数据后边增加换行符,同时使用“字符串.join()“方法将每个变量数据联合写成一个字符串,并增加间隔符”\t";
④对于写入CSV文件的writer方法,可以调用writerow函数将列表中的每个元素逐行写入文件。

import csv
content=(['0','hanmeimei','23','81'],['1','mayi','18','99'],['2','jack','21','89'])
f=open("test.csv","w",newline='')
content_out=csv.writer(f)
for con in content:
    content_out.writerow(con)
f.close()

在这里插入图片描述

import csv
content=(['0','hanmeimei','23','81'],['1','mayi','18','99'],['2','jack','21','89'])
f=open("test.csv","w")#不加newline='',会出现空行
content_out=csv.writer(f)
for con in content:
    content_out.writerow(con)
f.close()

在这里插入图片描述

2.关闭文件

eg:跳过文件中的注释内容和缺失值
补充:strip()函数,移除字符串头尾指定的字符序列,返回移除字)符串头尾指定的字符生成的新字符串。
详情见:link
在这里插入图片描述

def skip_header(f):
    line=f.readline()
    while line.startswith('#'):
        line=f.readline()
    return line

def process_file(f):
    #调用函数使其跳过文件头部
    line = skip_header(f).strip()
    for line in f:
        if line.startswith("-") or line.startswith("#"):
            line=f.readline()
        line=line.strip()#去除空行
        line=line.strip("#")#去除行中的"#"print(line)
        
if __name__=="__main__":
    input_file=open("泰戈尔的诗.txt",'r',encoding='UTF-8')
    process_file(input_file)
    input_file.close()

在这里插入图片描述

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: 文本文件读取Python文件操作中的一种常见操作。可以使用Python内置的open()函数打开文本文件,然后使用read()或readlines()方法读取文件内容。 具体步骤如下: 1. 使用open()函数打开文本文件,可以指定文件路径、文件名和打开模式等参数,例如: ``` file = open('example.txt', 'r') ``` 2. 使用read()方法读取整个文件内容,例如: ``` content = file.read() ``` 3. 使用readlines()方法按行读取文件内容,例如: ``` lines = file.readlines() ``` 4. 读取完成后,记得使用close()方法关闭文件,例如: ``` file.close() ``` 需要注意的是,在读取文件时,需要确保文件存在且有读取权限。另外,读取完成后也要及时关闭文件,避免资源浪费和文件损坏等问题。 ### 回答2: Python是一门广泛应用的编程语言,对于文本文件读取也提供了很好的支持。在Python中,我们可以使用open()函数打开文本文件读取其中的内容。要读取文本文件,我们需要先了解文件的打开模式、文件读取方法、文件编码等基本概念。 文件的打开模式包括读模式('r')、写模式('w')、追加模式('a')和二进制模式('b')。其中,读模式用于打开现有的文件读取其中的内容;写模式用于创建一个新文件并写入内容;追加模式用于在现有文件末尾添加新的内容;二进制模式则用于打开二进制文件。 当我们使用open()函数打开一个文件时,需要指定文件名和打开模式,如下所示: ``` f = open('test.txt', 'r') ``` 这将打开名为test.txt的文本文件并以读模式打开。接下来,我们可以使用f.read()方法来读取整个文件的内容: ``` content = f.read() print(content) ``` 这将输出文本文件中的所有内容。如果我们只想读取文件中的一部分内容,可以使用f.readline()方法读取一行内容,或者使用f.readlines()方法读取整个文件,并将每行内容作为一个元素存储在列表中。例如: ``` f = open('test.txt', 'r') lines = f.readlines() for line in lines: print(line) ``` 这将逐行读取文件中的内容,并输出每行内容。 对于文本文件的编码问题,Python支持多种字符编码方式,例如UTF-8、GBK等。我们可以在open()函数中指定编码方式,如下所示: ``` f = open('test.txt', 'r', encoding='UTF-8') ``` 这将打开一个UTF-8编码的文本文件。 需要注意的是,读取文本文件时要注意文件编码的一致性,否则可能会出现乱码等问题。 在读取完文本文件后,我们需要使用f.close()方法关闭文件句柄,以便释放资源。完整的文本文件读取示例代码如下: ``` f = open('test.txt', 'r', encoding='UTF-8') lines = f.readlines() for line in lines: print(line) f.close() ``` 这将打开名为test.txt的文本文件读取其中的内容,并逐行输出。最后,使用f.close()方法关闭文件句柄,以便释放资源。 ### 回答3: Python是一门广泛应用于数据分析和科学计算的高级编程语言,也是工业界和学术界常见的使用语言之一。在学习Python时,文件读取是非常基础却也非常常见的需求之一。 文本文件是一类非常常见的文件,它由一个或多个字符构成,而不是二进制数据。在Python中实现文本文件读取,需要使用一些内置函数和语句: 1.打开文件:可以使用内置函数open()打开文件,它返回一个file对象,用于在程序中对文件进行读取或修改。例如: file_obj = open('file.txt', 'r') #r代表读取模式 这里我们利用open()来打开文件file.txt。需要注意的是,open()既可以读取文件,也可以写入文件。 2.读取文件:在打开文件后,我们可以通过read()函数来读取文件中的内容,并将读取到的内容存储到一个字符串变量中。例如: content = file_obj.read() 则表示将读取文件中的所有内容存储到变量content中。如果文件很大,可以在read()函数中指定读取的字节数量,例如: content = file_obj.read(100) 则表示只读取file.txt文件中的前100个字符,并将其存储到content中。 3.关闭文件读取文件后,一定要记得关闭文件。可以使用close()函数来关闭文件。 file_obj.close() 通过上述步骤,我们可以轻松地在Python中实现对文本文件读取。需要注意的是,在读取文件时,要注意编码方式和文件路径等问题,才能确保文件能够正确地解析。 总之,Python文件之文本文件读取,是一个比较基本的操作,也是Python的入门必备知识之一。掌握了这个技能,不仅能够更好地处理文本数据,也能够更好地理解Python基础知识的本质。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值