python(5)——文件操作

python文件操作

对文件的操作分三步:

1、打开文件获取文件的句柄,句柄就理解为这个文件

2、通过文件句柄操作文件

3、关闭文件。

1 f=open(‘users.txt‘,‘r‘)  #打开文件, 默认为只读模式
2 res = f.read()#读取文件内容
3 print(res)
4 f.close()#关闭文件

(一)打开文件

f=open(‘users.txt‘,‘r‘,encoding=‘utf-8‘)  #默认为只读模式 

  with使用:在操作文件的时候,经常忘了关闭文件,这样的就可以使用with,它会在使用完这个文件句柄之后,自动关闭该文件,使用方式如下:

1  with open(‘users.txt‘,‘r‘) as f:#打开一个文件,把这个文件的句柄付给f
2           for line in f:
3               print(line)
4
5  with open(‘file.txt‘) as fr,with open(‘file_bak‘,‘w‘) as fw: #这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
6            for line in fr:#循环file.txt中的每一行
7                fw.write(line)#写到file_bak文件中

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

打开文件的模式:

r 只读模式(默认),打开文件不存在的话,会报错
w 只写模式,不可读,不存在则创建,存在则会清空原来的文件内容
a 追加写模式,不可读,不存在则创建;存在则追加内容,不会清空原来的内容

r+ 读写模式  可读、可写,可追加,打开不存在的文件会报错
w+ 写读模式  使用w+,已经存在的文件内容会被清空,可读,但读的内容为空
a+ 追加读写模式  可读(注意读的时候先把文件指针移到文件头f.seek(0)),可写  不存在则创建,存在则只追加内容

"b"表示处理二进制文件(图片、歌曲、视频、压缩包....)
rb  wb ab
rb+  wb+  ab+

(二) 读文件:三种方式 read()、 readlines()、 readline()

 1 f=open(‘users.txt‘,‘r‘,encoding=‘utf-8‘)  #默认为只读模式
 2 # read()一次读完文件所有内容,返回一个字符串
 3 print(‘第一次读:‘,f.read())  #获取到文件里面所有的内容,返回为字符串
 4 print(‘第二次读:‘,f.read())  #返回为空,读不到东西  因为第一次读完文件后指针移动到了文件末尾 若想第二次读,前面加f.seek(0)
 5
 6 # readlines()获取到文件里面所有的内容,返回list,每一行内容为list的一个元素
 7 print(f.readlines())  # [‘123451234512345\n‘, ‘heheheeh\n‘, ‘iesidfksfjasi\n‘, ‘oijeunlpihml‘]
 8
 9 #readline()一次读一行,返回字符串
10 print(f.readline())  #123451234512345
11 print(f.readline())  #heheheeh

大文件时,读取文件高效的操作方法:

用read()和readlines()方法操作文件的话,会先把文件所有内容读到内存中,内存数据一多,非常卡,高效的操作,就是读一行操作一行,读过的内容就从内存中释放

f=open(‘users.txt‘,encoding=‘utf-8‘)

# while True:
#     line=f.readline()
#     if line!=‘‘:
#         print(‘line:‘,line)
#     else:
#         print(‘文件内容读完了‘)
#         break

#直接循环文件对象 ,不需要read
for line in f:
    print(line)

(三)写文件:两种方式 write()、 writelines()

写入字符串时用write(),写入list用writelines()
 1 f=open(‘users.txt‘,‘w‘,encoding=‘utf-8‘)  #默认为只读模式
 2 users=[‘key1,123\n‘,‘key2,456\n‘,‘key3,789\n‘]
 3 #white() 入参为字符串,所以将一个列表写到文件中,若用write(),需循环取出每个元素再写
 4 for i in users:
 5     f.write(i)
 6
 7 #writelines()  入参为list ,所以可直接将list写到文件中
 8 f.writelines(users)

(四)修改文件内容

1、把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容;2、把修改后的文件内容写到一个新的文件中

 1 #方法一:
 2 # (1)先读到文件内容 --替换--只写方式再次打开文件(清空原来内容)---写入新的内容
 3 #需两次打开文件
 4 f=open(‘file.txt‘,encoding=‘utf-8‘)
 5 res=f.read().replace(‘一点‘,‘二点‘) #文件读完后,指针在最后面
 6 f.close()
 7 f=open(‘file.txt‘,‘w‘,encoding=‘utf-8‘) #只写模式打开文件,写入时会清空原来的内容
 8 f.write(res)
 9 f.close()
10
11
12 #(2)用truncate()方法清空文件内容  只需一次打开文件
13 f=open(‘file.txt‘,‘a+‘,encoding=‘utf-8‘)
14 f.seek(0)
15 res=f.read().replace(‘你‘,‘you‘)
16 f.seek(0)    #read()之后,指针在文件末尾,需先移动指针到最前面
17 f.truncate() #清空原来文件内容
18 f.write(res)
19 f.flush()  #不等缓冲区满,立即把内容写入磁盘
20 f.close()
 1 #方法二:打开两个文件--把源文件中的内容读出修改,写到新文件中---删除源文件--将新文件名字修改成源文件名字
 2 # 操作大文件时  一次操作一行
 3 import os
 4 f=open(‘file.txt‘,encoding=‘utf-8‘)
 5 f2=open(‘file_bak.txt‘,‘w‘,encoding=‘utf-8‘)  #w 文件不存在会新建
 6
 7 for line in f:  #循环取出原文件中每一行
 8     new_line=line.replace(‘我‘,‘me‘) #修改原文件
 9     f2.write(new_line)  #写入新文件
10
11 f.close()
12 f2.close()
13
14 os.remove(‘file.txt‘)  #删除原文件
15 os.rename(‘file_bak.txt‘,‘file.txt‘) #将新文件名字修改成原文件名字
16
17 #用with同时打开多个文件
18 with open(‘file.txt‘) as fr,open(‘file_bak.txt‘,‘w‘) as fw:   #with会自动判断什么时候关闭文件  可同时打开多个文件
19     for line in fr:
20         new_line = line.replace(‘我‘, ‘me‘)
21         fw.write(new_line)
22 os.remove(‘file.txt‘)
23 os.rename(‘file_bak.txt‘,‘file.txt‘)

(五)文件操作练习:

 1 #1.从日志里面找到1分钟之内访问超过200次的ip,加入黑名单
 2 #2、每分钟都运行一次
 3
 4 # 1、读取文件内容,获取到ip地址
 5 # 2、把每个ip地址和出现的次数保存到字典中
 6 # 3、判断ip访问的次数是否超过200
 7 # 4、加入黑名单 print出来
 8 # 记住读到的位置,下次从这里开始读
 9
10 import time
11 point=0   #文件指针初始位置
12 while True:
13     with open(‘access.log‘)as f:
14         f.seek(point)  #第一次循环时,从文件头开始读
15         ip_all={}  #定义字典,保存出现的ip及其次数
16         for line in f: #循环取文件里面每行数据
17             ip=line.split()[0] #按照空格分割,取第一个元素就是ip
18             if ip in ip_all:
19                 ip_all[ip]+=1
20             else:
21                 ip_all[ip]=1
22     point=f.tell()  #记录本次读完后的指针位置  下次循环从这个位置开始读
23
24     for ip,count in ip_all.items():
25         if count>200:
26             print(‘%s加入黑名单‘%ip)
27     time.sleep(60)   #定时运行  一分钟循环一次

原文地址:https://www.cnblogs.com/HathawayLee/p/9573657.html

时间: 2024-10-12 02:55:41

python(5)——文件操作的相关文章

python之文件操作-复制、剪切、删除等

下面是把sourceDir文件夹下的以.JPG结尾的文件全部复制到targetDir文件夹下: <span style="font-size:18px;">>>>import os >>> import os.path >>> import shutil >>> def copyFiles(sourceDir,targetDir): for files in os.listdir(sourceDir):

Python开发【第三章】:Python的文件操作

Python的文件操作 一.读取操作,3种读取方式的区别 #!/usr/bin/env python # -*- coding:utf-8 -*- #-Author-Lian info_file = open("here_we_are",encoding="utf-8") #默认读取模式 print(info_file) #不加参数,直接打印 #<_io.TextIOWrapper name='here_we_are' mode='r' encoding='u

python中文件操作的其他方法

前面介绍过Python中文件操作的一般方法,包括打开,写入,关闭.本文中介绍下python中关于文件操作的其他比较常用的一些方法. 首先创建一个文件poems: p=open('poems','r',encoding='utf-8')for i in p:print(i)结果如下: hello,everyone白日依山尽,黄河入海流.欲穷千里目,更上一层楼. 1.readline   #读取一行内容 p=open('poems','r',encoding='utf-8') print(p.rea

Python中文件操作

一.文件打开操作 1.文件操作步骤: (1)打开文件模式: f =open("db",'a')    #文件追加 f = open("db",'r')    #只读操作(默认模式) f = open("db",'w')    #只写操作,会先清空原文件 f = open("db",'x')    #文件存在,会报错,不存在创建并只写 f = open("db",'rx|a|w')  #以二进制的方式只读或只

[python拾遗]文件操作

文件操作 1.open()函数 open()函数主要用于文件处理,一般分为下面3个过程: 1.打开文件 2.操作文件 3.关闭文件 常见的格式示例: f = open('note.txt','r') f.read() f.close() 1.打开文件 文件句柄 = open('文件路径','模式') 常见的模式有: 1.‘r’,只读 2.‘w’,只写(当对打开执行只写操作后,文件原内容将会被清空,注意备份) 3.‘a’,追加 "+" 表示可以同时读写某个文件 1.‘r+’ 2.‘w+’

【转】PYTHON open/文件操作

[注]虽是转载,但会在原文上有些修改! open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:'rb','wb','r+b'等等 读写模式的类型有: rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)w     以写方式打开,a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+     以读写模式打开w+   

[转载]python:open/文件操作

open/文件操作f=open('/tmp/hello','w') #open(路径+文件名,读写模式) #读写模式:r只读,r+读写,w新建(会覆盖原有文件),a追加,b二进制文件.常用模式 如:'rb','wb','r+b'等等 读写模式的类型有: rU 或 Ua 以读方式打开, 同时提供通用换行符支持 (PEP 278)w     以写方式打开,a     以追加模式打开 (从 EOF 开始, 必要时创建新文件)r+     以读写模式打开w+     以读写模式打开 (参见 w )a+ 

Python关于文件操作的总结

获取当前工作目录:os.getcwd() 返回指定目录下的所有文件和目录名 os.listdir() 删除一个文件 os.remove() 删除多个文件 os.removedirs(r"c:\python") 校验给出的路径是否为一个文件 os.path.isfile() 校验给出的路径是否为目录 os.path.isdir() 判断是否为绝对路径 os.path.isabs() 返回一个路径的目录和文件名 os.path.split() 分离扩展名 os.path.splitext

python使用文件操作完成登录程序

本文主要是实现:在python中运用文件操作完成注册,验证和登录功能(ps:我的文件名为db) 代码: #!/usr/bin/env python# -*- coding:utf-8 -*-# author by lh def login(username, password): ''' 验证用户名和密码 :param username: :param password: :return: ''' with open('db', 'r') as f: for line in f: line =

python基本文件操作(文件输入和输出)

文件输入输出中常用的文件对象方法: open : 返回一个新的文件对象,调用该对象的上的方法可对文件进行任何操作 readline: 读取一行你给哦如果您包括结尾的换行符在内 write: 将数据写入文件中 close: 关闭文件对象:   举例:读取E盘中的work.txt文件 f = open('work.txt') line  =f.readline() print(line) f.close() 如果给readline设置一个参数 n 则读取n个字符 不设置 则只读取一行包括结尾的换行符