open() 函数

模式 说明
r 只读模式
w 只写模式,文件不存在自动创建;存在则清空再写
a 只追加写,在文件最后追加写
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
w+ 打开一个文件用于写读,若文件已存在则将其清空,若该文件不存在,创建新文件。
a+ 打开一个文件用于读写。若文件已存在,文件指针将会在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。

这里我们操作的文件

mytest 内容为:

1111111111111
2222222222222
3333333333333

readline 函数

f = open('mytest', 'r', encoding="utf8")  # 以读模式打开
print(f.readline()) # 读一行内容
print(f.readline())
print(f.readline())
print(f.readline())
f.close() # 关闭文件

运行结果:



注意:

readline 函数会返回一行文件内容,因为 print 函数会换行,而文本中每行有 \n 这个换行符,所以每行内容之间会多了一个空白行。


readlines 函数

f = open('mytest', 'r', encoding="utf8")
print(f.readlines()) # 读取所有内容,以列表形式返回
f.close()

运行结果:

f = open('mytest', 'r', encoding="utf8")
for i in f.readlines():
print(i.strip()) # 通过 strip 函数除去每行后面的 \n 换行符
f.close()

运行结果:


需求:在文件第二行末尾加入 'klvchen'

number = 0
f = open('mytest', 'r', encoding="utf8")
for i in f.readlines():
number += 1
if number == 2:
print(i.strip()+'klvchen')
else:
print(i.strip())
f.close()

运行结果:



优化版本(一):

number = 0
f = open('mytest', 'r', encoding="utf8")
for i in f.readlines():
number += 1
if number == 2:
i = "".join([i.strip(), 'klvchen'])
print(i.strip())
f.close()

运行结果:



优化版本(二):

number = 0
f = open('mytest', 'r', encoding="utf8")
for i in f: # for内部将 f 对象做成一个迭代器,用一行取一行,避免占用过多内存
number += 1
if number == 2:
i = "".join([i.strip(), 'klvchen'])
print(i.strip())
f.close()

运行结果:


tell() 函数

作用:返回文件的当前位置,即文件指针当前位置。

f = open('mytest', 'r', encoding='utf8')
print(f.tell())
print(f.read(10))
print(f.tell())
f.close()

运行结果:


seek() 函数

作用: 移动文件读取指针到指定位置。

f = open('mytest', 'r', encoding='utf8')
print(f.tell())
print(f.read(10))
print(f.tell())
f.seek(0)
print(f.tell())
print(f.read(10))
f.close()

运行结果:


flush() 函数

作用: 刷新缓冲区,即将缓冲区中的数据立刻写入文件,同时清空缓冲区,不需要是被动的等待输出缓冲区写入。

一般情况下,文件关闭后会自动刷新缓冲区,但有时你需要在关闭前刷新它,这时就可以使用 flush() 方法。

import sys, time
for i in range(30):
sys.stdout.write("*")
sys.stdout.flush()
time.sleep(0.1)

运行结果:

注意:这是个进度条的展示

类似的实现可以使用下面代码:

import time
for i in range(30):
print("*", end='', flush=True) # print 函数也可以设置 flush 参数
time.sleep(0.1)

在文件第二行后面添加内容

f_read = open('mytest', 'r', encoding='utf-8')
f_write = open('mytest2', 'w', encoding='utf-8')
number = 0
for line in f_read:
number += 1
if number == 2:
line = ''.join([line.strip(), ' hello \n'])
f_write.write(line) f_write.close()
f_read.close()

运行结果:

使用另外一种方法打开文件,open 不需要自己调用 close()方法关闭

number = 0
with open('mytest', 'r') as f_read, open('mytest2', 'w') as f_write:
for line in f_read:
number += 1
if number == 2:
line = ''.join([line.strip(), ' hello \n'])
f_write.write(line)

运行结果:

Python 操作文件的更多相关文章

  1. Python操作文件、文件夹、字符串

    Python 字符串操作 去空格及特殊符号 s.strip().lstrip().rstrip(',') 复制字符串 #strcpy(sStr1,sStr2) sStr1 = 'strcpy' sSt ...

  2. Python操作文件和目录

    Python操作文件和目录 读写文件比较简单,有一点特别注意就好了 windows下Python默认打开的文件以gbk解码,而一般我们的文件是utf-8编码的,所以如果文本含有中文,就会出现异常或者乱 ...

  3. python操作文件练习,配置haproxy

    在使用python操作文件的时候,特别是对于网络设备,通常操作配置文件,会简化配置量,配置文件加载到内存中,运行时使用的是内存中的配置,内存中配置修改后立即生效,如果不将配置内容保存到硬盘中,则下次重 ...

  4. Python操作文件-20181121

    Python操作文件 Python操作文件和其他语言一样,操作的过程无非是先定位找到文件.打开文件,然后对文件进行操作,操作完成后关闭文件即可. 文件操作方式:对文件进行操作,主要就是读.写的方式,p ...

  5. 使用python操作文件实现购物车程序

    使用python操作文件实现购物车程序 题目要求如下: 实现思路 始终维护一张字典,该字典里保存有用户账号密码,购物车记录等信息.在程序开始的时候读进来,程序结束的时候写回文件里去.在登录注册的部分, ...

  6. 用Python操作文件

    用Python操作文件 用word操作一个文件的流程如下: 1.找到文件,双击打开. 2.读或修改. 3.保存&关闭. 用Python操作文件也差不多: f=open(filename) # ...

  7. python操作文件案例二则

    前言 python 对于文件及文件夹的操作. 涉及到 遍历文件夹下所有文件 ,文件的读写和操作 等等. 代码一 作用:查找文件夹下(包括子文件夹)下所有文件的名字,找出 名字中含有中文或者空格的文件 ...

  8. open -python操作文件

    一打开文件 二操作文件 三关闭文件 open(文件,模式,编码),打开文件----->0101010(以二进制的方式打开)------>编码(open默认utf-8编码)------> ...

  9. Python操作文件文档

    需要帮老师将44G的图书分类一下,人工当然累死了.所以用Python大法处理一下. 思路是读取文件目录下的书名,然后去百度百科查分类,如果还没有就去豆瓣,当当查.哪一个先找到其余的就不用找了.如果没有 ...

  10. Python 操作文件、文件夹、目录大全

    # -*- coding: utf-8 -*- import os import shutil # 一. 路径操作:判断.获取和删除 #1. 得到当前工作目录,即当前Python脚本工作的目录路径: ...

随机推荐

  1. KMP string pattern matching

    The function used here is from the leetcode. Details can be found in leetcode problem: Implement str ...

  2. ZZNU 2098 Drink coffee(差分+树状数组)

    题目链接:http://acm.hi-54.com/problem.php?pid=2098 2098 : Drink coffee 时间限制:1 Sec 内存限制:256 MiB 提交:32 答案正 ...

  3. 分布式控制系统Git学习

    git : n. 饭桶,无用的人 github : n. 社交编程及代码托管网站 hub: n. 中心:毂:木片 Git是一个分布式版本控制软件,最初由林纳斯·托瓦兹(Linus Torvalds)创 ...

  4. 人生苦短之---第一个Python程序

    第一个 Python 程序 目标 第一个 HelloPython 程序 Python 2.x 与 3​​.x 版本简介 执行 Python 程序的三种方式 解释器 —— python / python ...

  5. 90 % Java 程序员被误导的一个性能优化策略

    我们经常看到一些 Java 性能优化的书或者理念,说不要在循环内定义变量,这样会占用过多的内存影响性能,而要在循环外面定义.接触 Java 这么久以来,相信很多 Java 程序员都被这种代码性能优化策 ...

  6. JAVA实现调用微信js-sdk扫一扫

    喜欢的朋友可以关注下. 已经很久没有给大家分享一片技术文章了,今天抽了点时间来,给大家说一说如何调用微信提供的扫一扫接口. 前提: 需要申请一个公众号:申请公众号需要的资料我就不说了,去申请微信会提示 ...

  7. Python之unittest测试代码

    前言 编写函数或者类时,还可以为其编写测试.通过测试,可确定代码面对各种输入都能够按要求的那样工作. 本次我将介绍如何使用Python模块unittest中的工具来测试代码. 测试函数 首先我们先编写 ...

  8. Android 源码分析01_AsyncTask

    [参考文献] http://blog.csdn.net/singwhatiwanna/article/details/17596225 /* * Copyright (C) 2008 The Andr ...

  9. 从零开始学 Web 之 DOM(四)节点

    大家好,这里是「 Daotin的梦呓 」从零开始学 Web 系列教程.此文首发于「 Daotin的梦呓 」公众号,欢迎大家订阅关注.在这里我会从 Web 前端零基础开始,一步步学习 Web 相关的知识 ...

  10. Oracle的数据并发与一致性详解(上)

    今天想了解下oracle中事务与锁的原理,但百度了半天,发现网上介绍的内容要么太短,要么版本太旧,而且抄袭现象严重,所以干脆查官方帮助文档(oracle 11.2),并将其精华整理成中文,供大家一起学 ...