目录
实践一:读取文件并打印,read()
实践二:读取文件的一行并打印,readline()
实践三:读取文件的所有行存入到一个列表中并打印,readlines()
实践四:向文件中写入字符串,write()
实践五:将一个文件中的内容逐行写入到另一个文件中
python的读写文件操作在很多项目中都会遇到,抽出时间,把这部分好好总结一下,以备不时之需。
用python进行读写的时候,一般会涉及到常用的方法,像open,write,read,readline,readlines,with等,接下来对这些方法进行剖析,然后再通过实践来运用一下这些方法。
open(filename,mode):
该函数是python的内置函数,通过该函数打开一个文件,文件的名字或路径就是filename;打开该文件的同时,可以声明参数mode,指定对该文件是只读或只写或可读可写等,默认是只读;该函数的返回值一个文件对象,通过文件对象可以调用write,read这一系列方法。
参数mode:该参数的取值可以为以下这些值
r:以只读方式打开文件。文件的指针将会放在文件的开头。该参数的默认值。
w:只写该文件,即只能往该文件中写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,则创建新文件。
r+:打开一个文件用于读写。文件指针将会放在文件的开头。
w+:打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。与w的不同之处在于可以读
a:打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+:打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
除此之外可以多加一个b,即rb,wb,rb+,wb+,ab,ab+,这些的意思是打开文件的方式是以二进制的形式打开,其他的都保持一致。
通过调用函数open(),我们得到一个文件对象,通过文件对象可以调用以下这些方法:
read([size]):size表示从文件中读取的字节数,size 未指定则返回整个文件,read()读到文件尾时返回""(空字串)。
readline():该方法从文件中读取整行,包括换行符'\n'。
readlines([size]) :返回包含size行的列表, size 未指定则返回全部行,即读取全部行,并且把所有行放入到一个列表中,每一行作为一个字符串,列表中的一个元素代表一行。
write("context\n"):双引号内的内容为要写入文件中的内容,要确保它是字符串,如果要写入字符串以外的数据,则先将它转换为字符串再写入。
close(): 关闭文件,打开文件并处理完毕后,需要关闭文件。如果用with open() as .. 则不需要调用close方法。
创建一个txt文件,存入以下内容,注意aaa之后我没有换行:
ddddd
bbb
ccc
aaa
编写以下代码:
# 获得文件的路径
fpath1 = r"C:\Users\LBS\Desktop\test1.txt"
# 使用with open打开文件,这样不用调用close()方法来关闭文件了
with open(fpath1, 'r') as f:
# read()方法,读取文件中所有的内容
content = f.read()
print(content)
结果如下:
# 获得文件的路径
fpath1 = r"C:\Users\LBS\Desktop\test1.txt"
# 使用with open打开文件,这样不用调用close()方法来关闭文件了
with open(fpath1, 'r') as f:
# readline()方法,读取文件中每一行,当读取完一行再次读取时,则从上次读取结束处开始读取
content1 = f.readline()
print(content1)
content2 = f.readline()
print(content2)
结果如下:
# 获得文件的路径
fpath1 = r"C:\Users\LBS\Desktop\test1.txt"
# 使用with open打开文件,这样不用调用close()方法来关闭文件了
with open(fpath1, 'r') as f:
# readlines()方法,读取文件中所有行,每一行作为一个字符串存入在列表中,并且换行符用\n来表示。
content = f.readlines()
print(content)
结果如下:
注意这里我在open文件的时候,我里面的参数变成了w,w的意思是我每次先清除文件中的所有内容然后再写入。
编写代码如下:
# 获得文件的路径
fpath1 = r"C:\Users\LBS\Desktop\test1.txt"
# 使用with open打开文件,这样不用调用close()方法来关闭文件了
with open(fpath1, 'w') as f:
# readlines()方法,读取文件中所有行,每一行作为一个字符串存入在列表中,并且换行符用\n来表示。
content = f.write('eeeee\n')
结果如下:之前的内容被清空,只存有写入的内容,如果想要再以前的内容后面写入,则把open内的参数更换为’a' 或‘a+’
假设当前有两个txt文件,内容分别如下:
我们打算将aaa.txt文件中的内容写入到test1中,并保证test1中的原有内容不会被删除。
编写以下代码:
# 获得两个文件的路径
fpath1 = r"C:\Users\LBS\Desktop\aaa.txt"
fpath2 = r"C:\Users\LBS\Desktop\test1.txt"
# 以只读的形式打开文件fpath1
with open(fpath1, 'r') as f:
# readlines()方法,读取文件中所有行,每一行作为一个字符串存入在列表中,并且换行符用\n来表示。
# 这样我们得到了一个字符串列表,字符串列表中的每个元素代表一行内容
aaa_content = f.readlines()
# 以列表的形式打印aaa.txt中的内容
print('aaa.txt中的内容为:{}'.format(aaa_content))
# 以追加的形式打开文件fpath2
with open(fpath2, 'a+') as f1:
# 循环遍历aaa.txt中每一行的内容,写入文件遇到\n时自动换行
for i in aaa_content:
f1.write(i)
结果为:可见eeeee后面追加了四行内容
以上就是python读写文件的应用,大家可以多动手尝试以下当open中的打开文件模式更改时,会有什么不同之处。
书写不易,转载请注明出处。