f : 变量,f_obj, file, f_handler,...文件句柄。

open : windows 的系统功能。

windows 默认编码方式:gbk。   Linux 默认编码方式:utf - 8.

f.close()   关闭文件。

f = open(r'F:\顾清秋.txt',encoding='utf-8',mode='r')
content = f.read()
print(content)
f.close()

文件执行动作(打开方式):

    只读,只写,追加,读写,写读....

    r  只读

    1.文件以什么编码方式存储的,就以什么编码方式打开,编码不一致时会报错。

    2.文件路径: 

        绝对路径:从根目录开始,一级一级查找到文件。F:\顾清秋.txt

        相对路径:从同一个文件夹下,直接写文件名即可。

    rb  非文字类文件时,用rb.  (图片,视频等...)

    1.全部都出来 f.read()

    2.一行一行的读。

f = open('log',encoding='utf-8')
print(f.readline())
print(f.readline())
f.close() # 顾清秋
# # 自动换行
# 顾清秋

    3.将原文件的每一行作为一个列表的元素。

f = open('log',encoding = 'utf-8')
print(f.readlines())
f.close() # ['顾清秋\n', '顾清秋\n', '顾清秋']

    4.读取一部分 read(n)

    在 r 模式下,read(n)按照字符去读取。

f = open('log1',encoding='utf-8')
print(f.read(2))
f.close() # qw

    在 rb 模式下, read(n) 按照字节去读取。

f = open('log1',mode='rb')
content = f.read(2)
print(content)
f.close() # b'qw'

     5. 循环读取

f = open('log',encoding='utf-8')
for i in f:
print(i.strip())
f.close() # 顾清秋
# 顾清秋
# 顾清秋

   w  只写:

    没有文件,创建一个文件写入内容。

   有文件,将原文件内容清空,再写入内容。

f = open('log',encoding='utf-8',mode='w')
f.write('懒笨呆') #将懒笨呆写入到log文件中。
f.close()

    wb  以bytes类型写入。   

f = open('log',mode='wb')
f.write('老男孩'.encode('utf-8')) #将‘老男孩’编码成‘utf-8'写入。
f.close()

    a  没有文件,创建一个文件追加内容。

     有文件,直接追加内容

f =open('log2',encoding='utf-8',mode='a')
f.write('顾清秋') #将’顾清秋‘追加到'log2'文件中。
f.close()

    r+  先读,后追加  一定要先读后写

f = open('log1',encoding='utf-8',mode='r+')   #是先读,后追加!!!!
content = f.read()
print(content)
f.write('123q')
f.close()

    w+  先写后读

f = open('log',encoding='utf-8',mode='w+')
f.write('zhonguo')
# print(f.tell()) #按字节去读光标位置
f.seek(3) #按照字节调整光标的位置
print(f.read())
f.close()

    truncate : 按字节对原文件截取   需要在 writing 下才可用此方法。

f = open('log',encoding='utf-8',mode='a')   #追加模式下
f.truncate(3) #按字节对原文件截取
f.close()

   with 功能一:可以不用写      close(),程序会自动close().

with open('log',encoding='utf-8') as f:
print(f.read())

   with 功能二:可以一次性操作多个文件句柄。

with open('log',encoding='utf-8') as f1,\
open('log1',encoding='utf-8') as f2: #同时对'log','log2'进行只读操作。
print(f1.read())
print(f2.read())

对文件进行操作的步骤:

    1,将原文件读取到内存。

   2,在内存中进行修改,形成新的内容。

   3,将新的字符串写入新文件。

   4,将原文件删除。

   5,将新文件重命名成原文件。

import os    #引用os模块
with open('log',encoding='utf-8') as f1,\
open('log3',encoding='utf-8',mode='w') as f2:
content = f1.read() #因为要全部读取才能替换,比较占空间,所以一般不用此方法。
new_content = content.replace('顾清秋','懒笨呆')
f2.write(new_content)
os.remove('log')
os.rename('log3','log')
import os
with open('log',encoding='utf-8') as f1,\
open('log3',encoding='utf-8',mode='w') as f2:
for i in f1:
new_i = i.replace('懒笨呆','顾清秋')
f2.write(new_i)
os.remove('log')
os.rename('log3','log')

python's eighth day for me的更多相关文章

  1. Python从入门到精通之eighth!

    函数式编程与内置函数 函数作用域: def test1(): print('in the test1') def test(): print('in the test') return test1() ...

  2. python瓦登尔湖词频统计

    #瓦登尔湖词频统计: import string path = 'D:/python3/Walden.txt' with open(path,'r',encoding= 'utf-8') as tex ...

  3. 正则表达式匹配可以更快更简单 (but is slow in Java, Perl, PHP, Python, Ruby, ...)

    source: https://swtch.com/~rsc/regexp/regexp1.html translated by trav, travmymail@gmail.com 引言 下图是两种 ...

  4. python中关于传递参数模块argprase的一些小坑

    今天在写代码的时候遇到了一个关于parser的一些小坑,记录在此备用. 我们知道在python中可以用argprase来传递一些参数给代码执行,来看下面的例子,假设现在有一个test文件夹,下面有3个 ...

  5. Python笔记_第二篇_面向过程_第二部分_2.路径、栈和队列、内存修改

    这一部分分三个主题进行讲解,主要为后面的模块.包.第三方库的概念补充一些相关的内容. 1. 路径(Path): 相对路径和绝对路径. 举例1:我们先导入一个os库(模块)来观察一下路径 import ...

  6. 如何在Python中加速信号处理

    如何在Python中加速信号处理 This post is the eighth installment of the series of articles on the RAPIDS ecosyst ...

  7. Python中的多进程与多线程(一)

    一.背景 最近在Azkaban的测试工作中,需要在测试环境下模拟线上的调度场景进行稳定性测试.故而重操python旧业,通过python编写脚本来构造类似线上的调度场景.在脚本编写过程中,碰到这样一个 ...

  8. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  9. Python 小而美的函数

    python提供了一些有趣且实用的函数,如any all zip,这些函数能够大幅简化我们得代码,可以更优雅的处理可迭代的对象,同时使用的时候也得注意一些情况   any any(iterable) ...

随机推荐

  1. 10074 启用开发者模式 for vs2015rc

    1. 关于VS2015RC 有两个版本,它们都包含了Windows 10 SDK. 社区版:免费,可以开发Windows UAP应用.iOS和Android应用.在 帮助->注册产品 菜单可以登 ...

  2. 使用Spring实现MySQL读写分离

    1. 为什么要进行读写分离 大量的JavaWeb应用做的是IO密集型任务, 数据库的压力较大, 需要分流 大量的应用场景, 是读多写少, 数据库读取的压力更大 一个很自然的思路是使用一主多从的数据库集 ...

  3. 【枚举】【最小生成树】【kruscal】bzoj3754 Tree之最小方差树

    发现,若使方差最小,则使Σ(wi-平均数)2最小即可. 因为权值的范围很小,所以我们可以枚举这个平均数,每次把边权赋成(wi-平均数)2,做kruscal. 但是,我们怎么知道枚举出来的平均数是不是恰 ...

  4. window.location.href无法跳转

    onclick事件存在事件冒泡 所以要阻止它冒泡 解决:在onclick事件里添加return false阻止冒泡:onclick="window.location.href='XXXXX. ...

  5. 手机app后台初学

    初学者一看到接口就想到 不是interface.,但是这里不是,这里就是一个URL,app给这个URL传递参数,然后URL返回数据给APP,然后APP就能和服务端联动提供动态数据 举个最简单的例子,用 ...

  6. C#实现文件与二进制互转并存入数据库

    这篇文章主要介绍了C#实现文件与二进制互转并存入数据库,本文直接给出代码实例,代码中包含详细注释,需要的朋友可以参考下 //这个方法是浏览文件对象     private void button1_C ...

  7. 机器学习算法实现解析——libFM之libFM的训练过程概述

    本节主要介绍的是libFM源码分析的第四部分--libFM的训练. FM模型的训练是FM模型的核心的部分. 4.1.libFM中训练过程的实现 在FM模型的训练过程中,libFM源码中共提供了四种训练 ...

  8. eclipse 智能提示js和jquery等前端插件

    使用Eclipse写Jquery和Javascript代码的时候,是没有智能提示的.我们可以使用一个插件来解决这个问题. 安装完成后,Eclipse会自动重启.重启之后,我们在项目上右键,   根据自 ...

  9. 程序员有什么办法能快速梳理java知识点?有这八张图就够了

    一图胜千言,下面图解均来自Program Creek 网站的Java教程,目前它们拥有最多的票选.如果图解没有阐明问题,那么你可以借助它的标题来一窥究竟. 1.字符串不变性 下面这张图展示了这段代码做 ...

  10. Python学习-括号

    python语言最常见的括号有三种,分别是:小括号( ).中括号[ ]和大括号也叫做花括号{ }.其作用也各不相同,分别用来代表不同的python基本内置数据类型. 1.python中的小括号( ): ...