文件操作的基本步骤:

  1.打开文件:f=open('filename'),with open('filename') as f

  2.操作文件:增,删,改,查

  3.关闭文件:f.close

打开文件

  python中打开文件的函数为open('filename',mode='r',encode='None'),open函数默认返回文件的句柄,我们可以根据句柄来对文件进行增,删,改,查的操作。将句柄赋给我们定义的变量,假设我们定义变量为f,则f=open('filename',mode='r',encode='utf-8') 或者with open('filename') as f。

注意点:

  1.python解释器打开文件时,是对硬盘进行操作,需要内核态才可以操作硬盘,故此时python解释器是调用操作系统的文件读取接口。windows中文版本默认使用GBK编码表,linux默认使用utf-8,所有如果操作的文件在windows下,非GBK编码的,需要在open函数中声明编码类型,使操作系统运用相应的编码规则进行解码读取,防止串码,乱码现象。

  2.open主要有三种模式,读(r),写(w),追加(a),其中,默认为读模式。各个模式的详解,见下文。

关闭文件

  关闭文件有两组方式:1.使用f.close()  ,f为open返回的句柄赋值的变量名。 2.程序结束后,自动关闭。第二个方法容易造成文件写操作时,数据的丢失。原因是写数据时,数据会先保存在内存中,文件关闭时才会写入硬盘,此时如果文件未关闭,软件因为异常崩溃,导致内存中的数据丢失,且未写入硬盘中。作为第二种关闭方法的优化,是使用:with open('filename') as f 。with会创建一个程序块,将文件操作置于with程序块下,这样with控制块结束,文件也会自动关闭。

文件操作

  查(文件已读模式打开,或者w+,a+模式):

  f.read():读取文件内容,默认为读取全部(返回字符串类型),可在括号内指定读取的字节(py2)或字符数(py3)。在windows下,读取非GBK格式文件,需要加编码参数encoding。

  f.readline():一行一行的读取文件内容。

  f.readlines():读取文件的全部内容,以列表的形式返回。一行为列表中的一个元素。

  f:以迭代的方式读取文件,优化了内存使用。

f.seek():移动光标位置,f.seek(offset[, whence]),whence可选,默认值为 0。给offset参数一个定义,表示要从哪个位置开始偏移;0代表从文件开头开始算起,1代表从当前位置开始算起,2代表从文件末尾算起。whence为1或者2时,文件需要以bytes的方式打开,且定义的位移单位为字节。

   f.tell():返回当前光标所在的位置

  

  增:

  f.write():写数据进文件

  f.flush():将内存中的数据刷新到硬盘上

  改,删:

  由于文件在磁盘中的存储都是固定的扇区,如果要对文件进行更改,只能再新建一个文件,进行修改和删除的操作。

  

文件打开模式

  r+,w+,a+模式:

  r为只读模式,以该模式打开文件,则只能进行读操作,不能写。r+则是读写模式,先读取文件内容,后写入新的内容,所以使用该模式修改文件,则修改的内容会添加到文件的末尾。

  w为写模式,w会覆盖掉原先的文本内容,重新写入数据。w+为写读模式,先写后读。所以需要先写数据后,利用seek移动光标位置再读取数据 。w+的特性也导致了文件内容会被覆盖。

  a为追加写模式,会将内容追加到文件模式。a+是先追加后读,所以加的内容会在文件末尾,读取文件时也需要用seek来移动光标位置再读取。

示例:

下面会文件内容

global
log 127.0.0.1 local2
daemon
maxconn
log 127.0.0.1 local2 info
defaults
log global
mode http
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
option dontlognull listen stats :
stats enable
stats uri /admin
stats auth admin: frontend oldboy.org
bind 0.0.0.0:
option httplog
option httpclose
option forwardfor
log global
acl www hdr_reg(host) -i www.oldboy.org
use_backend www.oldboy.org if www backend www.oldboy.org
server 100.1.7.9 100.1.7.9 weight maxconn backend www.oldboy2.org
server 100.1.7.10 100.1.7.9 weight maxconn
server 100.1.7.11 100.1.7.9 weight maxconn
server 100.1.7.12 100.1.7.9 weight maxconn backend www.oldboy3.org
server 100.1.3.9 100.1.7.9 weight maxconn
server 100.1.3.10 100.1.7.9 weight maxconn

  对文件进行读操作,输入域名,查询域名下的对应配置内容

flag=False
contain_list=[]
domain=input("请输入域名:").strip()
with open('haproxy.conf') as f:
for line in f: if line.startswith('backend') and line.count(domain):
flag=True
continue
elif line.startswith('backend') and flag:
flag=False
elif flag:
contain_list.append(line.strip())
for i in contain_list:
print(i)

  

  

  

Python之路-文件操作(py3)的更多相关文章

  1. Python之路----文件操作

    文件操作 1.能调用方法的一定是对象,比如数值.字符串.列表.元组.字典,甚至文件也是对象,Python中一切皆为对象. str1 = 'hello' str2 = 'world' str3 = ' ...

  2. python之路——文件操作

    阅读目录 初窥文件操作基本流程 文件编码 文件的打开模式 文件内的光标移动 with上下文管理 文件的修改 练习 回到顶部 初窥文件操作基本流程 计算机系统分为:计算机硬件,操作系统,应用程序三部分. ...

  3. 百万年薪python之路 -- 文件操作

    1.文件操作: f = open("zcy.txt" , mode="r" , encoding="UTF-8") open() 打开 第一 ...

  4. 百万年薪python之路 -- 文件操作练习

    1.有如下文件,a1.txt,里面的内容为: 老男孩是最好的学校, 全心全意为学生服务, 只为学生未来,不为牟利. 我说的都是真的.哈哈 分别完成以下的功能: a,将原文件全部读出来并打印. with ...

  5. Python修炼之路-文件操作

    Python编程之文件操作 文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 每次文件打开.读取信息时,Python自动记录所达到的位置,好比一个书签,之后每一次 ...

  6. python os&shutil 文件操作

    python os&shutil 文件操作 # os 模块 os.sep 可以取代操作系统特定的路径分隔符.windows下为 '\\' os.name 字符串指示你正在使用的平台.比如对于W ...

  7. python 历险记(三)— python 的常用文件操作

    目录 前言 文件 什么是文件? 如何在 python 中打开文件? python 文件对象有哪些属性? 如何读文件? read() readline() 如何写文件? 如何操作文件和目录? 强大的 o ...

  8. Python的高级文件操作(shutil模块)

    Python的高级文件操作(shutil模块) 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 如果让我们用python的文件处理来进行文件拷贝,想必很多小伙伴的思路是:使用打开2个 ...

  9. Python入门篇-文件操作

    Python入门篇-文件操作 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.文件IO常用操作 open:打开 read:读取 write:写入 close:关闭 readlin ...

随机推荐

  1. std::bind学习

    std::bind bind是对C++98标准中函数适配器bind1st/bind2nd的泛化和增强,可以适配任意的可调用对象,包括函数指针.函数引用.成员函数指针和函数对象. bind接受的第一个参 ...

  2. Ocelot:API网关概要

    一.概要 Ocelot是.Net Core下一个开源API网关:Ocelot主要目标是在.NET在微服务或面向服务架构中提供统一的入口服务, Ocelot拿到HttpRequest对象到管道后,先创建 ...

  3. c#XML转换成实体

    首选:我的XML文件如下(mysql表里导出的):几千条,就选2条做例子. <?xml version="1.0" encoding="utf-8" ?& ...

  4. SystemParametersInfo调置壁纸、屏幕保护程序

    应用SystemParametersInfo函数可以获取和设置数量众多的windows系统参数.这个小程序就是运用了SystemParametersInfo函数来设置桌面的墙纸,而且程序可以让我们选择 ...

  5. 【转】python虚拟环境--virtualenv

    virtualenv 是一个创建隔绝的Python环境的工具.virtualenv创建一个包含所有必要的可执行文件的文件夹,用来使用Python工程所需的包. 安装 pip install virtu ...

  6. 基于CSS属性display:table的表格布局的使用

    项目改造中遇到DIV+CSS实现的table,新需求需要在表格使用单元格合并,网上调查返现CSS display:table实现的table表格,没有单元格的属性和样式,经过一番思考,曲折现实了单元格 ...

  7. React高级教程(es6)——(1)JSX语法深入理解

    从根本上来说,JSX语法提供了一种创建React元素的语法糖,JSX语句可以编译成: React.createElement(component, props, …children)的形式,比如: & ...

  8. js 二维数组 for 循环重新赋值

    javascript 二维数组的重新 组装 var arr = [[1,2],[3,4],[5,6],[7,8]]; var temp = new Array(); for(var i= 0 ;i&l ...

  9. hashmap相关面试题

  10. 前后端分离不可缺少的神器 NGINX

    样例讲解 1:安装工具包 wget.vim和gcc yum install -y wget yum install -y vim-enhanced yum install -y make cmake ...