使用 Python 访问文件,首先得先打开文件,在 Python 下打开文件可以使用 open 内置函数

open

r——以只读方式打开
w——以写的方式打开
a——以追加模式打开
r+——以读写模式打开
w+——以读写模式打开(参见w)
a+——以读写模式打开(参见a)
rb——以二进制读模式打开(binary)
wb——以二进制写模式打开(参见w)
ab——以二进制追加模式打开(参见a)
rb+——以二进制读写模式打开(参见r+)
wb+——以二进制读写模式打开(参见w+)
ab+——以二进制读写模式打开(参见a+)

with open

我们试着打开一个文件如下:

In [1]: open('/tmp/tmp.txt')
Out[1]: <open file '/tmp/tmp.txt', mode 'r' at 0x1ba6150>In [2]: fd=open('/tmp/tmp.txt')     #用一个参数fd接收一下In [3]: type(fd)              #可以看到fd是文件类型
Out[3]: file

文件会有很多方法可以使用,比如 fd.close,打开一个文件也需要关闭它:

In [4]: fd.
fd.close       fd.flush       fd.next        fd.seek        fd.writelines
fd.closed      fd.isatty      fd.read        fd.softspace   fd.xreadlines
fd.encoding    fd.mode        fd.readinto    fd.tell
fd.errors      fd.name        fd.readline    fd.truncate
fd.fileno      fd.newlines    fd.readlines   fd.write       In [5]: fd.close()         #关闭文件

然后我们再已读写的方式打开之前那个文件:

In [6]: fd=open('/tmp/tmp.txt','w')          #以读写的方式打开这个文件In [7]: fd
Out[7]: <open file '/tmp/tmp.txt', mode 'w' at 0x1ba6270>In [8]: fd.wri
fd.write       fd.writelines  In [8]: fd.write("a")                        #往文件里面写入一个a,在这个时候会覆盖文件原有的内容In [9]: fd.clo
fd.close   fd.closed  In [9]: fd.close()                               接着我们关闭这个文件

接着我们以读写的方式写入一个“123”,然后再往文件里面追加一个“456”:

In [10]: fd=open('/tmp/tmp.txt','w')In [11]: fd.write("123\n")In [12]:In [12]: fd.close()In [13]:In [13]: fd=open('/tmp/tmp.txt','a')In [14]: fd.write("456\n")In [15]: fd.close()

文件内容变化如下:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat /tmp/tmp.txt
123
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat /tmp/tmp.txt
123
456

以只读模式打开文件如下:

In [16]: fd=open('/tmp/tmp.txt','r')In [17]: fd.read()
Out[17]: '123\n456\n'In [18]: fd.read()
'''因为读取第二遍的时候是往后读取的,
后面没有内容,所以返回的就是空的'''Out[18]: ''In [19]: fd.read()
Out[19]: ''

read方法的比较:

In [19]: fd.read()                  #返回的是一个字符串
Out[19]: ''In [20]: fd.readline()            #返回的是一个字符串
Out[20]: ''In [21]: fd.readlines()          #返回的是一个列表
Out[21]: []

我们把打开一个文件的操作脚本写入一个文件:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat openfile.py
#!/usr/local/python3/bin/pythonfd=open("/tmp/tmp.txt")
for i in fd.readlines():print(i)
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python openfile.py
123456[root@izj6cdhdoq5a5z7lfkmaeaz ~]#

由上面我们可以看到打开文件内容默认会显示空行,我们去掉空行,如下所示:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat openfile.py
#!/usr/local/python3/bin/pythonfd=open("/tmp/tmp.txt")
for i in fd.readlines():print(i,end='')
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python openfile.py
123
456
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#

我们一般建议在实际读取文件的时候去掉 read 方法,因为当文件非常大的时候,读取出来将消耗很大一部分的内存,一般直接进行如下代码即可:

[root@izj6cdhdoq5a5z7lfkmaeaz ~]# cat openfile.py
#!/usr/local/python3/bin/pythonfd=open("/tmp/tmp.txt")
for i in fd:       #这样遍历的就是一个对象,对象会一行一行的取值读出来print(i,end='')
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#
[root@izj6cdhdoq5a5z7lfkmaeaz ~]# python openfile.py
123
456
[root@izj6cdhdoq5a5z7lfkmaeaz ~]#

转载于:https://blog.51cto.com/shaoniana/2059751

使用for循环遍历文件相关推荐

  1. Python中的用for,while循环遍历文件实例

    使用for循环遍历文件 打开文件 open r:以读模式打开 w:以写模式打开 a:以追加模式打开 r+:以读写模式打开 w+:以读写模式打开(参见w) a+:以读写模式打开(参见a) rb:以二进制 ...

  2. 使用for循环遍历文件、使用while循环遍历文件

    使用for循环遍历文件 1.打开文件读 打开文件,从头到尾读完后,再执行read()就没有了 关闭后就不能读 readlines()和readline()区别: readline() :一行一行读取, ...

  3. 2021-09-09【linux】丨shell使用for循环遍历文件/数组

    目录 摘要 for循环遍历文件使用方法 方法一 方法二 总结 摘要 在日常生信分析过程中,分析员或多或少会使用for循环批量处理样品或者分组.这里我简单整理一下自己常用的两种遍历方法. for循环遍历 ...

  4. flac格式音频转wav|Linux 使用 Shell 循环遍历文件夹里的音频——简介

    FLAC (无损音频压缩编码)-百度百科简介 使用sox工具把 flac 格式转wav,命令如下: sox 1.flac 1.wav 如果你的 flac 通道数.采样率.量化进度和wav不一致的话,需 ...

  5. 用python画枫叶-Python中的用for,while循环遍历文件实例

    使用for循环遍历文件 打开文件 open r:以读模式打开 w:以写模式打开 a:以追加模式打开 r+:以读写模式打开 w+:以读写模式打开(参见w) a+:以读写模式打开(参见a) rb:以二进制 ...

  6. .NET循环遍历文件夹下所有文件.取文件夹和文件名文件内容

    protected void Button14_Click(object sender, EventArgs e){string strfilepath = @"F:\a";//要 ...

  7. 8.使用for循环和while循环遍历文件

    Python中有两种循环,分别为:for循环和while循环. 1. for循环 for循环可以用来遍历某一对象(遍历:通俗点说,就是把这个循环中的第一个元素到最后一个元素依次访问一次).for循环的 ...

  8. 第十六讲 循环遍历文件和元组

    for和while退出循环时,执行else语句 元组(tuples):圆括号括起来,逗号间隔,数据类型可以相同,也可以是不同类型. 元组和列表的区别:元组不可以修改,列表可以修改 eg1: tup=( ...

  9. C语言循环遍历文件夹查找文件内容(搜素/proc文件夹下的内容获取进程pid)

    参考文章:通过搜素/proc文件夹下的内容获取进程pid

最新文章

  1. java中注解的使用与实例 (二)
  2. 168. Leetcode 134. 加油站 (贪心算法-模拟题目)
  3. java 判断天是星期及_java判断日期是星期几的方法总结
  4. .NET Core/Framework 创建委托以大幅度提高反射调用的性能
  5. struct timeval结构体 以及 gettimeofday()函数
  6. 2009-07-03 19:48 在linux中如何获得微秒精度的时间?-转
  7. 9.看板方法---建立输入节奏
  8. 兴业数金牛客java笔试题
  9. windows下的dig 命令和nslookup的用法及详例
  10. python+ffmpeg视频转码转格式
  11. QGC地面站配置PX4Flow光流传感器
  12. 初创软件企业如何合理避税?
  13. 清理计算机磁盘碎片,电脑磁盘碎片清理我帮你
  14. word插入图片,嵌入型,无效果
  15. 64位多核 MIPS 异常和中断内核代码分析
  16. 北京地铁线路中心计算机系统,北京地铁DT—1型计算机联锁系统
  17. C++的第一个程序 helloword
  18. 植物大战僵尸1辅助,JS版
  19. textarea填充整个td
  20. airbnb客户聚类分群python实战

热门文章

  1. Apache服务器配置技巧
  2. 毕业设计:基于Web实现多用户宿舍管理系统
  3. 大数据笔记2019.5.6
  4. java中方法的重写
  5. On-Heap与Off-Heap
  6. Redis在windows实现将数据缓存起来定时更新读取
  7. POJ 1094 Sorting It All Out (拓扑排序)
  8. NS2源码图示---数据链路层 (转帖)
  9. 安装华为T2000软件,无法初始化MS SQL 2000问题解决办法
  10. anaconda安装scrapy失败的解决方法(2020.7.7)