一.open文件读取

1.open('file','mode')打开一个文件

  • file  要打开的文件名,需加路径(除非是在当前目录)
  • mode  文件打开的模式
  • 需要手动关闭close

2.with open('file','mode')as...

  • 不需要手动关闭文件

3.'r': 以只读模式打开(默认)(必须保证文件存在)

  • 文件名中出现汉字时,需在括号内加 u 就不会出现报错IOError

    file1 = open("D:\新方硕.txt","r")
    print (file1.read())
    file1.close()
    
    file1 = open(u"D:\新方硕.txt","r")
    #文件内中文为手动输入,则需转码
    print (file1.read().decode('gbk').encode('utf-8'))
    file1.close()
  • read(size) 读取所有
    •   返回字符串
    • 括号接读取 size 字节
      #read()不传参数时默认读取所有
      file1 = open(u"D:\新方硕.txt","r")
      print (file1.read())
      file1.close()
      
      #read(3)括号内参数3代表字节数,一个汉字3个字节
      file1 = open(u"D:\新方硕.txt","r")
      print (file1.read(3))
      file1.close()
  • readline()默认读取一行
    •   返回字符串
    •   括号内填了子节数,则按字节读取
      #readline()默认读取一行
      file1 = open(u"D:\新方硕.txt","r")
      print (file1.readline())
      file1.close()
      
      #readline(size)括号内填了子节数,则按字节读取
      file1 = open(u"D:\新方硕.txt","r")
      print (file1.readline(5))
      file1.close()
  • readlines()读取所有
    •   返回列表

      file1 = open(u"D:\新方硕.txt","r")
      print (str(file1.readlines()).decode('string_escape'))
      with open('d:\\test1.txt','r') as file1:
          for i in file1.readlines():
              print (i)
      #coding=utf-8
      
      file1 = open(u"D:\\学习.txt")
      for i in file1.readlines():
          print (i.splitlines()[0])
      file1.close()

备注:

  • 调用read()会一次性读取文件的全部内容,如果文件有10G,内存就爆了,所以,要保险起见,可以反复调用read(size)方法,每次最多读取size个字节的内容。另外,调用readline()可以每次读取一行内容,调用readlines()一次读取所有内容并按行返回list。因此,要根据需要决定怎么调用。
  • 如果文件很小,read()一次性读取最方便;如果不能确定文件大小,反复调用read(size)比较保险;如果是配置文件,调用readlines()最方便。

4.'w':以只写模式打开

  • 若文件存在,则会自动清空文件,然后重新创建。
  • 若文件不存在,则新建文件。
  • 使用这个模式必须要保证文件所在目录存在,文件可以不存在。
    file1 = open("D:\\xfs.txt","w")
    file1.write("I am python!")
    file1.close()
    #将test文件内容复制到test1中
    file1 = open('d:\\test.txt','r')
    file2 = open('d:\\test1.txt','w')
    file3 = file2.write(file1.read())
    file1.close()
    file2.close()
    with open('d:\\test.txt','w') as file1:
        file2 = file1.write('缘分一道桥\n歌词\n男:\n秦时明月汉时关\n万里长征人未还\n但使龙城飞将在\n不教胡马度阴山\n女:\n狼烟千里乱葬岗\n'
                            '乱世孤魂无人访\n无言苍天笔墨寒\n笔刀春秋以血偿\n男:\n谈爱恨 不能潦草\n战鼓敲啊敲\n用信任 立下誓言我来熬\n'
                            '女:\n这缘份 像一道桥\n旌旗飘啊飘\n你想走就请立马抽刀爱一笔勾销\n合:\n谈爱恨 不能潦草\n红尘烧啊烧\n以生死 '
                            '无愧证明谁重要\n女:\n这缘份 像一道桥\n故事瞧一瞧\n男:\n走天涯你我卸下战袍\n合:\n梦回长城谣')
  • 该模式下不能使用 read*()方法。
    #报错IOError: File not open for reading
    file1 = open("D:\\xfs.txt","w")
    file1.write("I am python!")
    print (file1.read())

5.'a':以追加模式打开

  • 若文件存在,则会追加到文件的末尾。
  • 若文件不存在,则新建文件。
  • 该模式不能使用 read*()方法。
    file1 = open("D:\\xfs.txt","a")
    file1.write("我爱HTML")
    file1.close()

6.seek()指针从哪里开始写入

file.seek(offset[, whence])
  • offset -- 开始的偏移量,也就是代表需要移动偏移的字节数

  • whence:可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。

#表示从第三个子节后开始读取

file1 = open(u"D:\\新方硕.txt","r")
file1.seek(3)
print (file1.read(3))
file1.close()
data = open("d:\\test.txt","r")

data.seek(-15,2)
print (data.read())
data.close()

7.'r+': 以文本读写模式打开

  • 可以写到文件任何位置。
  • 默认写的指针开始指在文件开头, 因此会覆写。
  • 可以使用 read*()。
    file1 = open(u"D:\\新方硕.txt","r+")
    file1.seek(3)
    file1.write("HTML")
    file1.close()
    
    #默认从第一个子节开始覆写
    file1 = open(u"D:\\新方硕.txt","r+")
    file1.seek(3)
    file1.write("HTML")
    file1.close()
8.'w+': 以文本读写模式打开(打开前文件会被清空)
  • 可以使用 read*()
 
9.'a+': 以文本读写模式打开(写只能写在文件末尾)
  • 可以使用 read*()

python(open文件读取)的更多相关文章

  1. Python编码/文件读取/多线程

    Python编码/文件读取/多线程 个人笔记~~记录才有成长   编码/文件读取/多线程 编码 常用的一般是gbk.utf-8,而在python中字符串一般是用Unicode来操作,这样才能按照单个字 ...

  2. python大文件读取

    python大文件读取 https://stackoverflow.com/questions/8009882/how-to-read-a-large-file-line-by-line-in-pyt ...

  3. python .dcm文件读取,并转化为.jpg格式

    .dcm文件是DICOM(Digital Imaging and Communications in Medicine)即医学数字成像和通信中记录医学图像和相关信息的文件,在用于医学图像处理的时候我们 ...

  4. Python txt文件读取写入字典的方法(json、eval)

    link:https://blog.csdn.net/li532331251/article/details/78203438 一.使用json转换方法 1.字典写入txt import json d ...

  5. python tips:文件读取——换行符的问题

    问题:在windows系统中,换行的符号是'\r\n'.python在读文件的时候为了系统兼容,会默认把'\r','n','\r\n'都视作换行.但是在windows文件中,可能在同一行中同时存在'\ ...

  6. python应用文件读取写登录注册

    #!/usr/bin/python3# -*- coding: utf-8 -*-# Author: zhw#读取文件中的内容def open_file(filename ,file_type , * ...

  7. 用python实现文件读取和内容替换

    infile = open("D:/test.txt", "r") #打开文件 outfile = open("D:/pp2.txt", & ...

  8. [Python] 中文编码问题:raw_input输入、文件读取、变量比较等str、unicode、utf-8转换问题

    最近研究搜索引擎.知识图谱和Python爬虫比较多,中文乱码问题再次浮现于眼前.虽然市面上讲述中文编码问题的文章数不胜数,同时以前我也讲述过PHP处理数据库服务器中文乱码问题,但是此处还是准备简单做下 ...

  9. python 大文件以行为单位读取方式比对

    http://www.cnblogs.com/aicro/p/3371986.html 先前需要做一个使用python读取大文件(大于1G),并逐条存入内存进行处理的工作.做了很多的尝试,最终看到了如 ...

  10. python中逐行读取文件的最佳方式_Drupal_新浪博客

    python中逐行读取文件的最佳方式_Drupal_新浪博客 python中逐行读取文件的最佳方式    (2010-08-18 15:59:28)    转载▼    标签:    python   ...

随机推荐

  1. Redis慢日志查询

    Redis slowlog 是个什么 redis的slow log记录了那些执行时间超过规定时长的请求.执行时间不包括I/O操作(比如与客户端进行网络通信等),只是命令的实际执行时间(期间线程会被阻塞 ...

  2. Oracle系列十一 数据处理

    数据操纵语言 DML(Data Manipulation Language – 数据操纵语言) 可以在下列条件下执行: 向表中插入数据 修改现存数据 删除现存数据 事务是由完成若干项工作的DML语句组 ...

  3. ROS tf-深入Time和TF

    博客转载自:https://www.ncnynl.com/archives/201702/1313.html ROS与C++入门教程-tf-深入Time和TF 说明: 介绍使用waitForTrans ...

  4. (三)用CONCAT 函数 拼接字段

    一.将两个列拼接成一个列 数据源 select CONCAT(TRIM(username),'(',locaiton,')') from user2 解释: TRIM()函数用于去除字符串左右两边的空 ...

  5. C#对泛型实例化对像的方法

    最近在搞一个小东东,用到了泛型的处理,用到了对泛型的实例化问题.下面来讲讲对泛型的实例化,以代码为例,如: public class A { } public class B<T> { p ...

  6. PHP实现的MongoDB数据增删改查

    原文地址:https://www.mongodb.org.cn/drivers/2.html   (该网站为mongoDB官方网站) php中使用mongodb你必须使用 mongodb 的 php驱 ...

  7. python爬虫4猫眼电影的Top100

    1 查看网页结构 (1)确定需要抓取的字段 电影名称 电影主演 电影上映时间 电影评分 (2) 分析页面结构 按住f12------->点击右上角(如下图2)---->鼠标点击需要观察的字 ...

  8. 安卓手机与iOS手机的区别

    安卓手机与iOS手机的区别 1.操作系统不同  安卓手机都是安卓操作系统:IOS手机都是iOS操作系统. 目前安卓最新的系统是Android 8.1:iOS版本最新的是iOS 11. 2.操作方式不同 ...

  9. TCP报文格式+UDP报文格式+MAC帧格式

    TCP和UDP的区别: 1)TCP是面向连接的,而UDP是无连接的 2)TCP提供可靠服务,而UDP不提供可靠服务,只是尽最大努力交付报文 3)TCP面向字节流,TCP把数据看成一串无结构的字节流,而 ...

  10. libevent实现TCP 客户端

    ibevent实现Tcp Client基于bufferevent实现 #include <stdio.h> #include <unistd.h> #include <s ...