python基础:文件及操作

文件路径

相对文件路劲:将数据文件存储在程序文件所在的目录

绝对文件路径:你可以将文件在计算机中的精确位置告诉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未执行,文件将不会关闭,这样可能会导致数据流失和损伤。

 

读取文件的相关函数:

  1. read( )       读取这个文件的全部内容,并将返回一个长长的字符串。
  2. readline( )    每次读取一行,返回一个字符串。
  3. readlines( )   一次性读取全部文件,自动将文件内容分析成行列表。

有关r,r+,w,w+,a,a+的相关说明:

  1. r  : 只读。
  2. r+ : 读写
  3. w :  写(写之前会自动清空文件内容)
  4. w+: 读写(读写之前会自动清空文件内容)
  5. a  :附加(在文本内容末端进行附加)
  6. 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,

猜你喜欢

转载自blog.csdn.net/qq_40935723/article/details/81868890
今日推荐