一.文件基本操作

1.文件的打开

打开文件时,需要指定文件路径和以何等方式打开文件,打开后,即可获取该文件句柄,日后通过此文件句柄对该文件操作

2.文件的读取

>>> f = open("f:/test.txt", "r")>>>f.read()'hello,world'

>>> f.close

3.打开文件的模式有:

r ,只读模式【默认】

w,只写模式【不可读;不存在则创建;存在则清空内容;】

x, 只写模式【不可读;不存在则创建,存在则报错】

a, 追加模式【可读;   不存在则创建;存在则只追加内容;】

"+" 表示可以同时读写某个文件

r+, 读写【可读,可写】

w+,写读【可读,可写】

x+ ,写读【可读,可写】

a+, 写读【可读,可写】

>>> f = open("f:/test.txt", 'r+')>>>f.read()'heheo,world~~'

>>> f.write("\naaaaaaa")8

>>>f.tell()22

>>>f.read()''

>>>f.tell()22

>>>f.seek(0)

0>>>f.read()'heheo,world~~\naaaaaaa'

"b"表示以字节的方式操作

rb  或 r+b

wb 或 w+b

xb 或 w+b

ab 或 a+b

#以二进制文件写

f = open("file.txt", "wb")

str_data= "呵呵"bytes_data= bytes(str_data, encoding='utf-8')

f.write(bytes_data)

f.close()

#以二进制文件读

f = open("file.txt",'rb')

data=f.read()

f.close()print(data)

str_data= str(data,encoding="utf-8")print(str_data)

注:以b方式打开时,读取到的内容是字节类型,写入时也需要提供字节类型

4. r+, w+, x+, a+ 区别

r+ 可读,可写,若文件不存在会报错,根据指针位置可写随意位置

w+ 可写,可读,若文件不存在会创建,在进行写操作会清空文件内容

x+ 可写,可读,若文件存在会报错,不存在则创建

a+ 可写,可读,只能追加在文件尾部

5.文件内部支持操作:

readline()   逐行读取数据

#逐行去读,较省内存

f = open('log','r')

result=list()for line in open('log'):

line=f.readline()print(line)

result.append(line)print(result)

f.close()

trancate(),从文件的首行首字符开始截断,截断文件为n个字符;无n表示从当前位置起截断;截断之后n后面的所有字符被删除

>>> with open("f:/test.txt" , 'r+') as f:

... f.seek(2)

... f.truncate(3)

...2

3

>>> with open("f:/test.txt" , 'r+') as f:

... f.read()

...'hel'

read(),读取文件内容

>>> with open("f:/test.txt" , 'r+') as f:

... f.read()

...'hel'

write(),写入内容

>>> with open("f:/test.txt" , 'r+') as f:

... f.read()

... f.write('llo' + '\n' + 'test')

... f.seek(0)

... f.read()

...'hel'

80'helllo\ntest'

readlines(), 将文件内容以列表的形式存放,---->[“第一行”, "第二行"]

>>> with open("f:/test.txt" , 'r+') as f:

... temp=f.readlines()

...print(temp)

...

['heheo,world~~\n', 'aaaaaaa']

open(),打开文件

>>> f = open('f:/test.txt', 'r')

close(),关闭文件

f.close()

flush(),强行刷入硬盘

tell()  获取指针位置

seek()  跳转到某个位置

二.管理上下文

为了避免打开文件后忘记关闭,可以通过管理上下文

with open("log", 'r+') as f:

data=f.read()print(data)

三.练习

编写脚本实现 ,用户登录,注册,改密,删除功能

#!/usr/bin/env python#-*- coding:utf-8 -*-#删除用户,修改密码

deflogin(username, password):"""用户登录验证

:param username: 用户名

:param password: 密码

:return: True成功,False失败"""f= open('log', 'r', encoding='utf-8')for line inf:

line=line.strip()

userlist= line.split('$')if username == userlist[0] and password == userlist[1]:returnTruereturnFalsedefuser_ex(username):"""用于检测用户是否存在

:param username: 用户名

:return: True 表示存在,False用户不存在"""with open('log','r',encoding='utf-8') as f:for line inf:

line=line.strip()

userlist= line.split('$')if username inuserlist:returnTruereturnFalsedefres(username, password):"""用于用户注册

:param username: 用户名

:param password: 密码

:return: True注册成功"""with open('log','a',encoding='utf-8') as f:

temp= "\n" + username + "$" +password

f.write(temp)returnTruedefchange_pwd(username, password):"""用户修改密码

:param username: 用户名

:param password: 修改后的密码

:return: True修改成功,False修改失败"""file_object= open('log')try:

lines=open('log','r').readlines()for i inrange(len(lines)):if username inlines[i]:

test=lines[i].split('$')[1]

lines[i]=lines[i].replace(test,password)

open('log','w').writelines(lines)returnTruereturnFalsefinally:

file_object.close( )defdel_user(username):"""删除用户

:param username: 要删除用户名

:return: true 删除成功,False用户名不在列表中"""file_object= open('log')try:

lines= open('log', 'r').readlines()for i inrange(len(lines)):if username inlines[i]:dellines[i]print(lines)

open('log','w').writelines(lines)returnTrueelse:returnFalsefinally:

file_object.close()#def del_user(username):#with open('log', 'r') as f:#for line in f:#if re.match("lisi", line):#pass#else:#data = line#with open('log', 'w+') as f:#f.write(data)#return True#return False

defmain():

inp= input("1:登录;2:注册;3:删除用户;4:修改密码")

user= input("请输入用户名:")

pwd= input("请输入密码:")if inp == "1":

ret=login(user, pwd)ifret:print("登录成功")else:print("登录失败")elif inp == "2":

is_ex=user_ex(user)ifis_ex:print("用户已存在,无法注册")else:

resgister=res(user, pwd)ifresgister:print("用户已成功注册")else:print("注册失败")elif inp == "3":

del_us=del_user(user)ifdel_us:print("已删除")else:print("无此用户")elif inp == "4":

is_chage=change_pwd(user, pwd)ifis_chage:print("修改成功")else:print("无此用户")

main()

2.haproxy配置文件更改操作

需求:

1.匹配值 ,并将匹配到的内容以列表形式返回给用户

2.插入内容,用户input数据后,将数据更新至配置文件中

global

log 127.0.0.1 local2

daemon

maxconn 256

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 :8888

stats enable

stats uri /admin

stats auth admin:1234

frontend oldboy.org

bind 0.0.0.0:80

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 20 maxconn 3000

backend buy.oldboy.org

server 100.1.7.90 100.1.7.90 weight 20 maxconn 3000

配置文件

#!/usr/bin/env python#-*- coding:utf-8 -*-

deffetch(backend):

result=[]

with open('ha.conf', 'r') as f:

flag=Falsefor line inf:if line.strip().startswith('backend') and line.strip() == "backend" +backend:

flag=Truecontinue

if flag and line.strip().startswith('backend'):break

if flag andline.strip():

result.append(line.strip())returnresultdefadd(backend, record):

result=fetch(backend)if notresult:#无backend,无record

pass

else:#有backend

if record inresult:#记录record

pass

else:

result.append(record)

with open('ha.conf', 'r') as old, open('new.conf', 'w') as new:

continue_flag=Falsefor line inold:if line.strip().startswith('backend') and line.strip() == "backend" +backend:

continue_flag=True

new.write(line)for temp inresult:

new.write(" "*8 + temp + "\n")continue

if continue_flag and line.strip().startswith('backend'):

continue_flag=Falseifcontinue_flag:pass

else:

new.write(line)defadd2(backend, record):

with open('ha.conf', 'r') as old, open('new.conf', 'w') as new:

in_backend=False

has_backend=False

has_record=Falsefor line inold:if line.strip().startswith('backend') and line.strip() == "backend" +backend:

has_backend=True

in_backend=True

new.write(line)continue

if in_backend and line.strip().startswith('backend'):if nothas_record:

new.write(" "*8 + record + '\n')

new.write(line)

in_backend=Falsecontinue

if in_backend and line.strip() ==record:

has_record=True

new.write(line)continue

ifline.strip():

new.write(line)if nothas_backend:#写backend,写record

new.write('backend'+ backend + '\n')

new.write(' '*8 + record + '\n')#ret = fetch("www.oldboy.org")#print(ret)

#add('www.oldboy.org', "server 100.1.7.10 100.1.7.10 weight 20 maxconn 3000")#add2('www.oldboy.org', "server 100.1.7.11 100.1.7.11 weight 20 maxconn 3000")

View Code

3. 号码段截取

需求:

将文件中的第二列前三字节和后四字节以逗号分开,文件格式如下:

1,"1300000","山东","济南","中国联通","0531","250000"

2,"1300001","江苏","常州","中国联通","0519","213000"

3,"1300002","安徽","巢湖","中国联通","0565","238000"

4,"1300003","四川","宜宾","中国联通","0831","644000"

5,"1300004","四川","自贡","中国联通","0813","643000"

需求目标:

1,"130","0000","山东","济南","中国联通","0531","250000"

代码实现:

def phone():

with open("mobile", "w+") as nf, open("Mobile.txt", "r") as f:

for row in f:

row = row.strip().split(',')

row = (row[:1] + [row[1][:4]+'"', '"' + row[1][4:]] + row[2:])

nf.write(str(row).strip('[]').replace('" ', "")+'\n')

python如何处理inp文件_python 之文件操作相关推荐

  1. python以读写方式打开文件_python读写文件操作详细介绍【传智播客】

    Python文件的打开或创建可以使用函数open().该函数可以指定处理模式,设置打开的文件为只读.只写或可读写状态.open()的声明如下所示. open(file, mode='r', buffe ...

  2. python引入同目录文件_Python的文件目录操作

    录也称文件夹,用于分层保存文件.通过目录可以分门别类地存放文件.我们也可以通过目录快速找到想要的文件.在Python中,并没有提供直接操作目录的函数或者对象,而是需要使用内置的os和os.path模块 ...

  3. python如何使用文件_Python的文件操作

    文件的操作,归根结底就只有两种:打开文件.操作文件 一.打开文件:文件句柄= open('文件路径','模式') python中打开文件有两种方式,即:open(...) 和  file(...),本 ...

  4. python基础文档_python基本文件操作

    python文件操作 python的文件操作相对于java复杂的IO流简单了好多,只要关心文件的读和写就行了 基本的文件操作 要注意的是,当不存在某路径的文件时,w,a模式会自动新建此文件夹,当读模式 ...

  5. python 读写utf8文件_Python关于 文件读写的总结

    # 文件的操作 # 打开文件 open # 默认的编码是gbk 这个是中文编码,最好的习惯呢就是我们再打开一个文件的时候 # 给它指定一个编码类型 # fobj=open('./Test.txt',' ...

  6. python编程头文件_python头文件怎么写

    本文主要以python2为例.首先介绍一下Python头文件的编程风格,然后再给大家详细介绍import部分的基本用法.这两个部分就是Python中头文件的组成模块. 编程风格#!/usr/bin/e ...

  7. python def return 文件_python基础-文件处理与函数

    1. 文件处理 1.1 文件处理流程 1.打开文件,得到文件句柄并赋值给一个变量 2.通过句柄对文件进行操作 3.关闭文件 1.2 文件读取模式r r文本模式的读,在文件不存在,不会创建新文件 f = ...

  8. python素材和代码_python之文件和素材

    11.1 打开文件 open函数 open(name[,mode[,buffering]]) >>>f = open(r'C:\text\somefile.txt') 11.1.1 ...

  9. unity webgl读写txt文件_python Files文件读写操作

    今天学习python的Files文件读写操作,并记录学习过程欢迎大家一起交流分享. 首先新建一个文本文件test.txt,内容如下: hello worldhello youhello mehello ...

  10. python编程头文件_python头文件的编程风格

    python头文件的编程风格 发布时间:2020-09-03 10:23:25 来源:亿速云 阅读:96 作者:小新 小编给大家分享一下python头文件的编程风格,希望大家阅读完这篇文章后大所收获, ...

最新文章

  1. 【每日DP】day3 P1387 最大正方形(奇怪的DP增加了 / 二维前缀和)难度⭐⭐★
  2. thinkphp-join
  3. 直击微软MIX11 聚焦IE10、Silverlight5、WP7
  4. max的贴图烘焙技术简易流程
  5. C/C++数组与指针
  6. mysql主从1594错误_3分钟解决MySQL主从1594错误
  7. C++:MAC安装Boost库文件并且使用CLion开发
  8. 函数定义的规范-电子书包
  9. 山师计算机应用技术试题和答案,山师计算机应用技术的试题和答案.doc
  10. 解决在IE浏览器中JQuery.resize()执行多次的方法(转)
  11. Hibernate 简单的CURD操作
  12. 基于java框架springboot在线外卖点餐系统 毕业论文 选题课题参考(2)后台管理
  13. 王者荣耀在android目录下的名字,王者荣耀手q区有哪些 王者荣耀安卓手Q区名称...
  14. LK_Novel_DL 轻国小说下载工具 Docx Python
  15. php唯美博客,24个很酷的PHP开源库
  16. 鸿蒙三千法则排名,混沌三千大道,鸿钧掌仙道,仅排第五!前十大道分别为谁掌握?...
  17. 深度解析IPFS是什么
  18. 18.play依赖管理
  19. HTTP概念协议报文结构请求响应数据报分析
  20. Word2007 无法复制粘贴的原因以及正确加载mathtype

热门文章

  1. Python3 面向对象之:多继承
  2. 【题解】Luogu p3478 [POI2008]STA-Station 动态规划
  3. 一篇关于arc下内存管理的老文章,包含各种冷门修饰符(关于内存),写的较好,mark...
  4. Hadoop HA集群部署
  5. xcode 9.0 iOS 11
  6. react navigation传值给上一页面
  7. myeclipse6.5安装jrable
  8. 博客园文章中图片太大显示不全的解决办法
  9. @Valid 和 @Validated的使用
  10. Restful无状态请求和网关