Python既然作为开发语言,肯定不可避免要操作外部文件,比如读取外部文件然后进行计算,比如将运算的结果存储到本地文件。下面演示python常用的操作文件的方法。
原
Python既然作为开发语言,肯定不可避免要操作外部文件,比如读取外部文件然后进行计算,比如将运算的结果存储到本地文件。下面演示python常用的操作文件的方法。
在 Python
中要操作文件需要记住 1 个函数和 3 个方法
序号 | 函数/方法 | 说明 |
---|---|---|
01 | open | 打开文件,并且返回文件操作对象 |
02 | read | 将文件内容读取到内存 |
03 | write | 将指定内容写入文件 |
04 | close | 关闭文件 |
open
函数负责打开文件,并且返回文件对象read
/write
/close
三个方法都需要通过 文件对象 来调用1.1在python,使用open函数,可以打开一个已经存在的文件,或者如果该文件不存在,则会创建一个新文件。
格式如下:open("文件名",访问模式) ,默认的创建的目录在当前程序所在的目录
fo=open("myfile.doc",'w') #该文件不存在,则在当前目录创建该文件,如下图:
温馨提示:频繁的移动文件指针,会影响文件的读写效率,开发中更多的时候会以 只读、只写 的方式来操作文件
访问模式 | 说明 |
---|---|
r | 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。 |
w | 打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a | 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
rb | 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。 |
wb | 以二进制格式打开一个文件只用于写入。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。 |
r+ | 打开一个文件用于读写。文件指针将会放在文件的开头。 |
w+ | 打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
a+ | 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。 |
rb+ | 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。 |
wb+ | 以二进制格式打开一个文件用于读写。如果该文件已存在则将其覆盖。如果该文件不存在,创建新文件。 |
ab+ | 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。 |
1.2因为文件的读取是流式的,像一个水管的阀门一样。每次读取操作的文件的时候,要先打开阀门open(),所以用完也要关闭。直接fo.close()即可。
-
# 新建一个文件,文件名为:test.txt
-
f =
open(
'test.txt',
'w')
-
# 关闭这个文件,文件操作完毕要将流给关闭
-
f.close()
1.写数据:使用write(“content”),可以完成向文件写入数据,注意:如果文件不存在那么创建,如果存在那么就先清空文件(覆盖),然后写入数据到文件里.
-
f =
open(
'write_demo.txt',
'w')
#打开文件,往哪个文件里写入数据。如无,创建。
-
print (
"文件名为: ", f.name)
#f.name打印文件的名称,带拓展名
-
f.write(
'hello ,I am writing ')
#注意write写入是先将文件内容清空,然后再写入。
-
f.close()
#关闭文件
2.读数据:使用read(num)可以从文件中读取数据,num表示要从文件中读取的数据的长度(字符个数),如果没有传入num或者为负,那么就表示读取文件中所有的数据,read()将读取的数据以字符串的形式返回。注意:
open('aaa.txt')
注意:read
()方法默认会把文件的所有内容 一次性读取到内存,当然可以指定读取的字符数。如果文件太大,对内存的占用会非常严重
-
#1.准备文件
-
f =
open(
'write_demo.txt',
'w+')
#新建文件,w+表示用于读写
-
f.write(
'你好abc王晓明,hello ')
#写入内容
-
f.close()
#文件关闭
-
-
#1.读取文件开始
-
f=
open(
"write_demo.txt",
'r')
-
content=f.read(
3)
#3表示读取3个字符,虽然说是byte。但是有中文时实际按字符返回的
-
print(
"读取的内容:%s"%content)
-
content1=f.read(
1)
#注意如果用read(),读取全部,后面再加read(num),就没有内容可读了。返回空字符串
-
print(
"读取文件的内容:%s"%content1)
-
content2=f.read(
5)
-
print(
"读取文件的内容:%s"%content2)
-
f.close()
-
''
'
-
读取的内容:你好a
-
读取文件的内容:b
-
读取文件的内容:c王晓明,
-
'
''
3.读数据:readlines()可以按照行的方式把整个文件中的内容进行一次性读取,读取所有行(直到结束符 EOF)并返回列表,并且返回的是一个列表,其中每一行(按着换行符进行判断一行)的数据为一个元素。
-
f = open(
'test.txt',
'r')
-
content = f.readlines()
#读取文件中的全部行,按行划分存储到列表中,类型字符串
-
print(type(content))
#打印读取结果的值类型,用list列表存储
-
-
i=
1
#遍历列表,将读取的内容显示出来,按照原来文件的行划分。
-
for temp
in content:
-
print(
"%d:%s"%(i, temp))
-
i+=
1
-
f.close()
-
'''
-
-
1:hello,world,
-
-
2:this is a demo
-
'''
4.读数据:readline(),对原文件的数据按行读取,(行的划分是\n).每次只读取一行。如果有多次读取的话,下面一次读取的偏移量是上面读取后的偏移量。
-
f = open(
'test.txt',
'r')
-
content = f.readline()
-
print(
"第一次读取:%s"%content)
-
-
content = f.readline()
-
print(
"第二次读取:%s"%content)
-
-
f.close()
-
'''
-
第一次读取:hello,world,
-
-
第二次读取:this is a demo
-
'''