Python基本语法 打开文件

打开文件的操作

数据是写在文件里面的,open file 可以实现  读取数据  写入数据

一般的文件操作步骤:

  1. 先打开文件
  2. 读取文件数据
  3. 写入数据
  4. 关闭文件

注意:文件打开后,最后一定要记得关闭文件,否则会引起很多问题

1.打开文件,使用的方法为open() 内置函数

f=open('文件名称/文件路径')

2.读取文件:

f.read()    就可以读取文件所有数据(读取的数据类型为字符串)

读取的方法有:

mode='r'  读取模式   (一般默认的模式为:读取模式) 所以,如果是进行文件读取,可以默认不传,但是前提必须是,读取时,文件必须存在,否则会报错

mode='rb'  也是读取模式,不过一般是以二进制格式打开一个文件,用于读写。一般用于非文本文件,例如图片

#打开文件
f = open('python_test.txt')#如果你读取的是同一个文件夹下,不需要加路径,不同文件下,需要加上详细的路径信息
#读取数据
data = f.read()#read 读取出来的数据是字符串
print(data)
print(type(data))  #打开文件读取出来的数据为字符串类型
#关闭文件 f.close()

输出结果为:
<class 'str'>

如果想将返回的字符串数据,存放在一个列表里面,方便后续处理,可以使用之前字符串的一个方法,split() 分割

split()  内置函数返回的结果为,字符串列表(分割后的参数为字符串形式,存储在列表内)----可以自行实践

new_data = data.split('
') #将返回的字符串以换行符进行切割存储
print(new_data)

3.写入文件

文件不存在(就是在一个新的文件里面,写入需要写入的数据)

  • mode='w'     覆盖模式
    • 在w模式下,如果之前没有这个文件,将会在传入的路径下创建一个新的文件
      #使用默认的mode='r'模式
      file=open('data.txt')    #执行会报错
      
      #使用mode='w'模式,写入除中文以外的字符,可以使用
      file=open('data.txt',mode='w')#可以在当前路径下创建一个新的文件;data.txt
      
      
      #如果要在文件里面写入中文,需要设置编码格式     encoding=utf-8,否则会乱码
      
      file = open('new_file.txt','w',encoding= 'utf-8')#添加编码格式encoding='utf-8'
      #写入数据
      file.write('这是一篇很好的文章')
      #关闭文件
      file.close()
    • 使用格式说明
    1. 使用open()内置函数打开文件,进行操作的过程中,不需要传入关键字mode,只需要传入对应的读取模式就行
    2. 原因是:open函数的源码部分,传入的参数位置:def open(file,mode ='r',buffering = None,encoding = None,......)
    3. 其中,mode为第二个位置参数,所以可以不用写,但是其他的需要传入,不然会报错,例如,常用的encoding位置参数

       注意事项:如果之前已经存在相同名称的文件,使用mode='w'模式,会覆盖之前的文件内用,所以使用时需要很谨慎

  • 如何解决被覆盖的问题
    • mode='a'    追加模式
    • 在a模式下,如果之前不存在的文件,会创建新的文件,且在每运行一次后,将新写入的内容追加到文档的最后位置
    • mode='b'  二进制模式    不能单独使用,要跟r,w组合使用,其中,图片就是的使用二进制打开和存储的
      file = open('你好.png',mode='rb')
      #读数据
      print(file.read())#打印出一串16进制的数字
      #关闭文件
      file.close()
    • mode='t'  文本模式    上面说的mode='r',实际上就是mode='rt',因为默认都是用txt打开
    • mode='+'  加模式  组合使用      r+ :可读可写,其中可写为追加模式
      file = open('new_file.txt',mode='r+',encoding= 'utf-8')
      file.read()#先读
      #写入数据
      file.write('这是一本很有意思的书')#再写
      #关闭文件
      file.close()

4.文件的操作之   seek

seek:表示光标在哪里

  • 打开一个文件时,光标在最开始的位置
  • 打开一个文件,w+的模式写入一些数据,但是没有关闭文件。再次读取时,不会读取到数据,因为此时的光标在最末尾(所以,一定要注意,打开文件,操作完成后,一定要关闭文件,再进行下一步操作
  • #此操作读取不到文件数据
    f = open('demo.txt','w+')#'w+'可以同时具备可读可写能力
    f.write('new line')
    print(f.read())
    #打开文件,操作完成后,关闭文件,再打开操作,就可以读取到最新数据
    f = open('demo.txt','w+')
    f.write('new line')
    f.close()
    f = open('demo.txt','r')
    print(f.read())
    #结果:new line

5.readlines  读取每一行,会存放在列表当中,每一行的数据就是列表的一个元素

   read    读取的数据是一整个字符串

#使用read()  读取全部数据
file=open('data.txt',encoding='utf-8')
data=file.read()
print(data)
print(type(data))

输出结果:
这是第一行内容
这是第二行内容
这是第三行内容
<class 'str'>


#使用readlines()  读取数据
data1=file.readlines()
print(data1)
print(type(data1))

输出结果:
['这是第一行内容
', '这是第二行内容
', '这是第三行内容']
<class 'list'>

readlines()  方法取出的数据为字符串,且存储在列表当中,且字符串末尾存在一个换行符,如果想要将返回的数据取出换行符,可以使用for循环进行遍历,取出每个字符串,然后使用字符串的strip() 方法,去除字符串首尾空格或者是换行符

方法二:使用enumerate() 方法  (可以多多了解,工作当中很实用)

file=open('data.txt',encoding='utf-8')

data1=file.readlines()
print(data1)
print(type(data1))
for line,data in enumerate(data1):
    if line == len(data1)-1:
        print(data)    #根据数据对应的下标位置,获取对应数据
    else:
        print(data[:-1])

输出结果:
这是第一行内容
这是第二行内容
这是第三行内容

6.with语句:可以让我们节省关闭文件的操作

首先,工作当中,我们经常遇到一些任务,可能事先需要设置,事后再做清理的工作。对于这种场景,Python的with语句提供了一个非常方便的处理方式。一个很好的例子就是文件处理,你需要获取一个文件句柄,从文件中读取数据,然后关闭文件句柄(此方法就是防止,书写过程中,忘记关闭文件,而导致报错)

with语句的语法:

with open(file)  as  filename:

使用方法:

with  open('data.txt')  as f:

   data= f.read()

   data1=f.readlines()

原文地址:https://www.cnblogs.com/lucky1212/p/13996215.html