用word操作一个文件的流程如下:

1、找到文件,双击打开

2、读或修改

3、保存&关闭

用python操作文件也差不多:

 f=open(filename)  # 打开文件
f.write("我是野生程序员") # 写操作
f.read() #读操作
f.close() #保存并关闭

不过有一点跟人肉操作word文档不同,就是word文档只要打开了,就即可以读、又可以修改。 但Python比较变态,只能以读、创建、追加 3种模式中的任意一种打开文件,不能即写又读。

1、只读模式(读模式只可读

 f = open('小重山', 'r', encoding='utf8') # 读模式只可读 写模式只可写
data = f.read(8) # 里面的值是取出来多少个字符 在python3中英字母和汉字是一个字符 Hello 在学
print(data)
f.close()

2、只写模式(写模式只可写,在创建对象的同时将文本里原本的内容清空掉

 f = open('小重山2', 'w', encoding='utf8')  # 写模式只可写,在创建对象的同时将文本里原本的内容清空掉
# 如果没有文件名将创建一个新的文件
print(f.fileno()) # 操作句柄 本质上就是一个对象
f.write('Hello World\n')
f.write('xiaohu')
f.close() # 关闭文件

3、追加模式(在文件内容后面添加新的内容 追加模式

 f = open('小重山2', 'a', encoding='utf8')  # 'a'在文件内容后面添加新的内容 追加模式
f.write('\nHello World\n')
f.write('alex')
time.sleep(5)
# f.close() # 关闭文件

4、混合模式

(1)r+(读写模式)

 f = open('小重山', 'r+', encoding='utf8')
print(f.readline())
f.write('岳飞')
for i in f:
print(i.strip()) # 一行一行的读取
f.close()

(2)w+(写读模式,w+先清空)

 f = open('小重山', 'w+', encoding='utf8')
print(f.readline()) # 读不出来内容 因为w+先清空
f.write('岳飞')
print(f.tell()) # 还是读不出内容,因为光标在输入的内容后面,后面是没有内容的
f.seek(0) # 要想在控制台显示内容,就要移动光标
for i in f:
print(i.strip()) # 移动光标之后就能看到内容了
f.close()

(3)a+(追加读模式)

 f = open('小重山', 'a+', encoding='utf8')
print(f.tell()) # 在文本内容末尾
print(f.readline()) # 此时控制台是没有显示任何内容的,因为光标在'a+'模式中在内容的末尾
f.close()

用法

1、文件操作之flush及遍历文件最优算法(1)

 print(f.readline())  # 输出文件第一行的内容 换行符也打印了
print(f.readline()) # 输出文件下一行的内容
print(f.readlines()) # 使用列表将一行一行的内容输出 换行符\n也输出
number = 0
a = f.readlines() # 使用列表将一行一行的内容存起来
for i in a: # 使用for循环来将列表内容输出
number += 1
if number == 2:
# print(i.strip(), 'xiaohu') # 加strip()方法去掉换行
i = '*****'.join([i.strip(), 'iiii']) # 字符串拼接用 join 不要用 +
print(i.strip())
f.close() # 关闭文件

2、文件操作之flush及遍历文件最优算法(2)

 f = open('小重山2', 'a', encoding='utf8')

 for i in range(30):
sys.stdout.write("*") # stdout 是一个终端的输出显示
sys.stdout.flush()
time.sleep(0.2) # 每隔0.2秒显示 for i in range(30):
print('*',end=' ',flush=True)
time.sleep(0.2) # 每隔0.2秒显示 f.truncate(5) # 在光标30处后面全删 'w'中全部格式化 ‘a’中正常截断
f.write('Hello world')
f.truncate(5)
f.close()

3、在某一行末尾添加字符串添加

 f = open('小重山', 'r+', encoding='utf8')
number=0
for line in f:
number+=1
if number==6:
line=''.join([line.strip(),'xiaohu'])
# f.write('xiaohu') # 写永远是在最后一行写 所以直接write()行不通!!!!!!! 因为存储机制决定了无法修改
print(line.strip())
f.close()

4、将一个文件里的内容写到另一个文件里,并且修改某一行

 f_read=open('小重山','r',encoding='utf-8')
f_write = open('小重山2','w',encoding='utf-8')
number = 0
for line in f_read:
number+=1
if number==5:
print(line)
line='hello 岳飞\n' # 将这一行内容进行修改
print(line)
f_write.write(line) # 将一个文件里的内容一行一行写到另一个文件里
f_read.close()
f_write.close()

5、文件操作之with方法

with open('log','r') as f: # 只要退出with代码块,自动帮你关,相当于f.close(),
f.readline()
f.read() with open('log1','r',encoding='utf-8') as f_read,open('log2','w',encoding='utf-8') as f_write: # 可以同时管理多个文件
# 相当于f_read=open('小重山','r',encoding='utf-8')
# f_write = open('小重山2','w',encoding='utf-8')
for line in f_read:
....

  

Python基本数据结构之文件操作的更多相关文章

  1. python学习笔记-(七)python基础--集合、文件操作&函数

    本节内容 1.集合操作 2.文件操作 3.字符编码与转码 4.函数操作 1.集合操作 集合是一个无序的.不重复的数据组合: 1.1 常用操作 它的作用是: 1)自动去重:列表变成集合,自动去重: &g ...

  2. Python之旅Day3 文件操作 函数(递归|匿名|嵌套|高阶)函数式编程 内置方法

    知识回顾 常见五大数据类型分类小结:数字.字符串.列表.元组.字典 按存值个数区分:容器类型(列表.字典.元组) 标量原子(数字.字符串) 按是否可变区分:可变(列表.字典) 不可变(数字.字符串.元 ...

  3. Python基础-week03 集合 , 文件操作 和 函数详解

    一.集合及其运算 1.集合的概念 集合是一个无序的,不重复的数据组合,它的主要作用如下 *去重,把一个列表变成集合,就自动去重了 *关系测试,测试两组数据之前的交集.并集.差集.子集.父级.对称差集, ...

  4. Python基本语法_文件操作_读写函数详解

    目录 目录 软件环境 file文件对象 open文件操作 读文件 read读取所有文件内容 readline获取一行内容 readlines读取所有文件内容 readreadlinereadlines ...

  5. Python基础7:文件操作

    [ 文件操作] 1 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 现有文件如下: 昨夜寒蛩不住鸣. 惊回千里梦,已三更. 起来独自绕阶行. 人悄悄,帘外月胧 ...

  6. python函数基础 与文件操作

    函数的定义 函数是通过赋值传递的,参数通过赋值传递给函数.def语句将创建一个函数对象并将其赋值给一个变量名,def语句的一般格式如下: def function_name(arg1,arg2[,.. ...

  7. Python 第三天 文件操作(2)

    文件操作 操作文件时,一般需要经历如下步骤: 打开文件 操作文件 一.打开 文件句柄 = file('文件路径', '模式') 注:python中打开文件有两种方式,即:open(...) 和  fi ...

  8. python学习笔记4(文件操作)

    文件操作: 1.f=open(”caidan”,”w”,encoding=”utf8”)      直接打开一个文件,如果文件不存在则创建文件 f.close() 2.with open (”caid ...

  9. Python自动化 【第三篇】:Python基础-集合、文件操作、字符编码与转码、函数

    1.        集合 1.1      特性 集合是一个无序的,不重复的数据组合,主要作用如下: 去重,把一个列表变成集合实现自动去重. set可以看成数学意义上的无序和无重复元素的集合,因此,两 ...

随机推荐

  1. pycharm 激活码 2019/11最新福利(2)

    812LFWMRSH-eyJsaWNlbnNlSWQiOiI4MTJMRldNUlNIIiwibGljZW5zZWVOYW1lIjoi5q2j54mIIOaOiOadgyIsImFzc2lnbmVlT ...

  2. JDBC访问数据库的基本步骤

    加载驱动 通过DriverManager对象获取连接对象Connection 通过连接对象获取会话 通过会话进行数据的增删改查,封装对象 关闭资源

  3. 从输入URL到页面渲染完成 -戈多编程

    1.输入URL地址 2.浏览器根据域名查询IP地址 3.浏览器发送HTTP请求到web服务器 4.服务器返回一个永久重定向响应 5.浏览器会跟踪重定向地址 6.服务器处理请求 7.服务器返回一个HTM ...

  4. 2.1实现简单基础的vector

    2.1实现简单基础的vector 1.设计API 我们参考下C++ <std> 库中的vector, vector中的api很多,所以我们把里面用的频率很高的函数实现; 1.1 new&a ...

  5. 基于 WebGL 的 3D 动态柱状图表

    发现现在工业SCADA上或者电信网管方面用图表的特别多,虽然绝大部分人在图表制作方面用的是echarts,他确实好用,但是有些时候我们不能调用别的插件,这个时候就得自己写这些美丽的图表了,然而图表轻易 ...

  6. django中app分组

    08.13自我总结 django中app分组 一.django路由系统app进行分组 1.创建app 使用pycharm创建django的时候, 加上app的名字,后续多个app只需复制粘贴之前app ...

  7. Ubuntu16.04 安装apache+mysql+php(LAMP)

    记录下ubuntu环境下安装apache+mysql+php(LAMP)环境. 0x01安装apache sudo apt-get update sudo apt-get install apache ...

  8. css 块元素超出文字省略表示

    .text-omit{ white-space: nowrap; text-overflow: ellipsis; overflow: hidden; } 只对块元素的设置有效 . 块元素和行内元素见 ...

  9. [网络流 24 题] luoguP4016 负载平衡问题

    [返回网络流 24 题索引] 题目描述 有成环状的 nnn 堆纸牌,现将一张纸牌移动到其邻堆称为一次操作.求使得所有堆纸牌数相等的最少移动次数. Solution 4016\text{Solution ...

  10. 一个关于内联优化和调用约定的Bug

    很久没有更新博客了(博客园怎么还不更新后台),前几天在写一个Linux 0.11的实验 [1] 时遇到了一个奇葩的Bug,就在这简单记录一下调试过程吧. 现象 这个实验要求在Linux 0.11中实现 ...