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. 牛客JS编程大题(二)

    11.统计数组 arr 中值等于 item 的元素出现的次数 function count(arr, item) { var num = 0; for(var i = 0;i < arr.len ...

  2. js验证身份证号,超准确

    js验证身份证号,超准确 看程序前先来了解下身份证号的构成:身份证号分为两种,旧的为15位,新的为18位.身份证15位编码规则:dddddd yymmdd xx p    其中 dddddd:地区码  ...

  3. 从小白到使用antd+react+react-router+issue+es6搭建博客

    概述 本身是前端小白,学过html,css,js的各种书,各种视屏,就是没有接触web开发的内容.偶然看见一个朋友用react搭建了一个博客,于是本着程序员无所不能的精神,也尝试着用react搭建博客 ...

  4. 处理返回键劫持(结合vue)

    在这里记录一下近期解决的一个问题 需求,在某个页面,浏览器返回按钮点击的时候,不能走浏览器的默认返回操作,而是要走自己的逻辑, 比如跳转页面等等. 那么问题来了,如何去不走默认返回呢.经过网上搜罗和同 ...

  5. Nginx---(Server虚拟主机)

    server{ listen PORT; server_name NAME; root /PATH: } 基于端口 listen指令监听在不同的端口; 基于IP 基于FQDN (域名,主机名) ser ...

  6. date内置对象

    声明一个日期对像:var date=new Date(); 获取日:date.getDate()    1-31日 获取星期:date.getDay()   星期0-6 获取月: date.getMo ...

  7. linux/cmd中python路径导入ModuleNotFoundError: No module named 'xxx'

    在linux或者直接在cmd中运行python文件时 会遇到导包错误的情况ModuleNotFoundError: No module named 'xxx’由于不在pycharm中 所以这里不能将上 ...

  8. web自动化测试---selenium分布式测试

    使用selenium框架还可以进行分布式测试,操作如下: 准备俩台PC:A和B,ip分别为IP_A和IP_B 下载最新的selenium-standalone的jar包,可以到下面地址下载各版本的包: ...

  9. python zip压缩文件 并移动到指定目录

    需要引入的3个包: import os import shutil import zipfile 1. # 创建zip文件对象your_zip_file_obj = zipfile.ZipFile(' ...

  10. 删除.svn 脱离svn版本控制器

    1.for /r . %%a in (.) do @if exist "%%a\.svn" rd /s /q "%%a\.svn" 复制到记事本,将记事本保存为 ...