文件路径
相对文件路劲:将数据文件存储在程序文件所在的目录
绝对文件路径:你可以将文件在计算机中的精确位置告诉python,这样就不用担心当前程序运行在什么地方。
Eg:例如我将一个名为python_texbook.txt的文本文档放在F盘中的python_files的文件中,表示格式为:F:\python_files\python_texbook.txt
(就我个人而言,若实在搞不清楚,推荐使用绝对文件路劲)
打开文件用 open( )函数,关闭文件用close( )函数
- filename = 'F:\python_files\pythontexbook.txt'
- open(filename)
- close(filename)
‘’’若仅有open打开文件,不使用其他关键字,一定要使用close函数将其关闭’’’
另一中打开文件的方式,使用with关键字
with open(filename) as f_obj:
两种方法中更推荐使用with关键字,关键字with在不再需要访问文件后将其关闭,若用我们用open和close来打开和关闭文件,如果程序中存在bug,导致close未执行,文件将不会关闭,这样可能会导致数据流失和损伤。
读取文件的相关函数:
- read( ) 读取这个文件的全部内容,并将返回一个长长的字符串。
- readline( ) 每次读取一行,返回一个字符串。
- readlines( ) 一次性读取全部文件,自动将文件内容分析成行列表。
有关r,r+,w,w+,a,a+的相关说明:
- r : 只读。
- r+ : 读写
- w : 写(写之前会自动清空文件内容)
- w+: 读写(读写之前会自动清空文件内容)
- a :附加(在文本内容末端进行附加)
- a+:附加和读(在文本内容末端进行附加,还可进行读写)
seek() 函数的使用
seek函数是Python中操作文件游标移动操作的函数,用法如下
seek(offset,whence=0)
offset:开始的偏移量,也就是代表需要移动偏移的字节数
whence:给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。
相关列子说明:(均使用相对路径)
在相对路径下创建一个名为test.txt的文本文档当中保存内容为123
r的用法
- fd = open('test.txt',’r’)
- print(fd.read())
- fd.close()
123
r+的用法
- fd = open('test.txt','r+')
- fd.write('456')
- print(fd.read())
- fd.close()
一段空格
原因如下:
使用r+使文件中的游标会在文件内容123之前,然后进行写的操作将会覆盖掉原来的内容变为456,但这时游标在文件末尾,这是读取的内容为文件末尾之后的内容所以没有结果,若在当中加一条fd.seek(0,0),将会得到456若是fd.seek(1,0)将会得到56
- fd = open('test.txt','r+')
- fd.write('456')
- fd.seek(0,0)
- print(fd.read())
- fd.close()
456
- fd = open('test.txt','r+')
- fd.write('456')
- fd.seek(1,0)
- print(fd.read())
- fd.close()
56
w的用法
- fd = open('test.txt','w')
- fd.write('789')
- fd.close()
这时打开文件,内容为 789
w+的用法
- fd = open('test.txt','w+')
- fd.write('789')
- fd.seek(0,0)
- print(fd.read())
- fd.close()
789
a的用法
- fd = open('test.txt','a')
- fd.write('zxc')
- fd.close()
这时打开文件,内容为 789zxc
a+的用法
- fd = open('test.txt','a+')
- fd.write('zxc')
- fd.seek(0,0)
- print(fd.read())
- fd.close()
789zxczxc
注意我们在使用a,a+时若想在fd.write()之前使用seek()函数时不会改变游标的位置,依然在文件的末尾。
综合应用:
- fd = open('test.txt','w+')
- fd.write('123')
- fd = open('test.txt','r+')
- fd.write('456')
- fd = open('test.txt','a+')
- fd.write('789')
- fd.seek(0,0)
- print(fd.read())
- fd.close()
456789
为什么不是123456789.
使用r+使文件中的游标会在文件内容123之前,然后进行写的操作将会覆盖掉原来的内容变为456,又因为a+所以文本内容变为456789,