1、打开文件的模式

1 r,只读模式(默认)【不可写;文件不存在,会报错】
2 w,只写模式【不可读;不存在则创建;存在则删除内容】
3 a,追加模式【不可读;不存在则创建;存在则追加内容】
4 r+,读写模式【可读、可写、可追加,如果打开的文件不存在的话,会报错】
5 w+,写读模式【使用w+的话,已经存在的文件内容会被清空,可以读到已经写的文件内容】
6 a+,追加读写模式【不存在则创建;存在则只追加内容;】

2、文件基本操作

1 # 打开文件(python默认字符集为utf-8,windows为gbk,所以要指定encoding='utf-8'),不输入模式默认为r模式
2 m = open('words',encoding='utf-8')
3 print(m.read())        # 读文件
4 print(m.readline())    # 读取第一行
5 print(m.readlines())   # 把文件的每一行放到一个list里面

3、文件操作方法

 1 f = open('words','r+',encoding='utf-8')  # encoding参数可以指定文件的编码
 2 f.readline()  # 读一行
 3 f.readable()  # 判断文件是否可读
 4 f.writable()  # 判断文件是否可写
 5 f.encoding    # 打印文件的编码
 6 f.read()      # 读取所有内容,大文件时不要用,因为会把文件内容都读到内存中,内存不够的话,会把内存撑爆
 7 f.readlines() # 读取所有文件内容,返回一个list,元素是每行的数据,大文件时不要用,原因和上面一样
 8 f.tell()      # 获取当前文件的指针指向
 9 f.seek(0)     # 把当前文件指针指向哪
10 f.write('爱情证书') # 写入内容
11 f.flush()     # 写入文件后,立即从内存中把数据写到磁盘中
12 f.truncate()  # 清空文件内容
13 f.writelines(['爱情证书','孙燕姿']) # 将一个列表写入文件中
14 f.close()     # 关闭文件

4、大文件读取高效操作方法

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

1 # 这样的话,line就是每行文件的内容,读完一行的话,就会释放一行的内存
2 f = open('words',encoding='utf-8')
3 for line in f:
4     print(line)

5、文件指针

1 # 用来记录文件读到哪里
2 # a模式的文件指针是在末尾的
3 m = open('name','a+',encoding='utf-8')
4 m.write('呃呃呃')
5 m.seek(0)          # 移动文件指针到最前面
6 print(m.read())
7 m.write('呵呵呵')  # 移动完文件指针之后,从前面开始读,但写的时候还是在文件末尾写
8 m.seek(0)
9 print(m.read())

6、自动关闭文件

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

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

7、修改文件

修改文件有两种方式:

  • 一种是把文件的全部内容都读到内存中,然后把原有的文件内容清空,重新写新的内容
  • 第二种是把修改后的文件内容写到一个新的文件中

第一种方式:

1 with open('words','r+',encoding='utf-8') as fr:
2     res = fr.read()    # 读出文件中的全部内容
3     new_res = res.replace('花','flower')  # 将'花'替换成'flower'
4     fr.seek(0)         # 将文件指针指向文件最开头
5     fr.truncate()      # 清空文件
6     fr.write(new_res)  # 将替换后的内容写入文件

第二种方式:

1 # 这个是多文件的操作,打开两个文件,fr是读file.txt,fw是新建一个file_bak文件
2 import os
3 with open('file') as fr,open('new_file','w') as fw:
4     for line in fr:  # 循环file.txt中的每一行
5         new_line = line.replace('花','flower')
6         fw.write(new_line) # 写到file_bak文件中
7         os.remove('file')  # 删除文件
8         os.rename('new_file','file') # 改名

8、f.write()和f.writelines()

 1 # f.write()只能写字符串
 2 a = ['abc\n','123\n','!@#']
 3 f = open('name','w')
 4 for i in a:
 5     f.write(i)
 6
 7 # f.writelines()会循环把list当中的元素写入文件
 8 a = ['abc\n','123\n','!@#']
 9 f = open('name','w')
10 f.writelines(a)

9、练习

(1)随机产生手机号,输入多少个就产生多少个

import random
start_num = '1387691'
f = open('test.txt','w',encoding='utf-8')
num = input('请输入要产生的手机号个数:')
for i in range(int(num)):random_num = str(random.randint(1,9999))   # 随机产生一个1-9999的数字new_num = random_num.zfill(4)              # 不够四位,前面补0phone_num = start_num + new_numf.write(phone_num + '\n')
f.close()

(2)监控日志,一分钟读一次日志文件,如果一分钟之内访问博客的IP地址超过50次,就把这个IP记录下加入黑名单

 1 # 分析:
 2     #打开日志文件
 3     #把ip地址拿出来
 4     #判断每一个ip出现的次数,如果大于50次,记录下来,加入黑名单
 5     #每分钟读一次
 6 import time
 7 point = 0
 8 while True:
 9     all_ips = []             #存放所有的IP地址
10     f = open('access.log',encoding='utf-8')
11     f.seek(point)            #移动文件指针
12     for line in f:           #直接循环一个文件对象,每次循环的是文件的一行
13         ip = line.split()[0] #拿到IP地址
14         all_ips.append(ip)   #把它存入数组当中
15     point = f.tell()         #记录指针位置
16     all_ip_set = set(all_ips)
17     for ip in all_ip_set:    #循环集合当中的IP,没有重复的
18         if all_ips.count(ip) > 50:  #判断的是数组当中的IP
19             print('攻击的ip是:%s'%ip)
20     f.close()
21     time.sleep(2)

转载于:https://www.cnblogs.com/L-Test/p/8983190.html

Python学习之==文件操作相关推荐

  1. Python学习笔记--文件操作

    (一)文件的编码 1. 编码 编码是一种规则集合,记录了内容和二进制间进行相互转换的逻辑 编码有许多种,最常用的是utf-8 2. 使用编码的原因 计算机只能识别二进制数,因此要将文件的内容翻译为二进 ...

  2. python学习日记(文件操作)

    文件操作概述 计算机系统分为:操作系统,计算机硬件,应用程序. 我们用python或其他语言编写的应用程序若想要把数据永久保存下来,必须要保存于硬盘中,这就涉及到应用程序要操作硬件,众所周知,应用程序 ...

  3. Python学习之文件操作

    一.文件File 通过Python程序来对计算机中的各种文件进行增删改查的操作 - I/O(Input / Output) - 操作文件的步骤: ① 打开文件 ② 对文件进行各种操作(读.写),然后保 ...

  4. Python学习(文件操作)

    文章目录 一.文件操作 1.1 常见的文件类型 1.2 文件操作的流程 1.3 文件的打开与关闭 打开 文件对象的属性 关闭 1.4 文件的读写: 读 写 1.5 定位读取 1.6 with open ...

  5. Python学习:文件操作

    一.打开文件 1.格式 在python,使⽤open函数,可以打开⼀个已经存在的⽂件,或者创建⼀个新⽂件,语法如下: open(name, mode) name:是要打开的⽬标⽂件名的字符串(可以包含 ...

  6. python设置文件权限_PYTHON学习之文件操作;

    PYTHON学习之文件操作: 文件内容替换 for line in flielinput.input("filepath",inplace=1): line = line.repa ...

  7. Python中的文件操作和异常

    Python中的文件操作和异常 文章目录 Python中的文件操作和异常 一.文件 01. 文件的概念 1.1 文件的概念和作用 1.2 文件的存储方式 文本文件和二进制文件 02. 文件的基本操作 ...

  8. python对PDF文件操作

    python对PDF文件操作 下载模块PyPDF2,以页为基本单位对PDF文件进行读写操作,无法直接操作每一页内容. PDF文件读操作 导入函数 from PyPDF2 import PdfFileR ...

  9. [Python学习日记] 文件与文件系统(一)

    [Python学习日记] 文件与文件系统(一) 目录 Python3 File(文件) 方法 open() 方法 file 对象 目录 Python3 File(文件) 方法 open() 方法 Py ...

最新文章

  1. TVM部署预定义模型
  2. 【堆叠抓取+深度学习】基于深度学习+PPO深度强化学习的堆叠物体抓取算法的MATLAB仿真
  3. php js 比较大小写,JavaScript中如何实现大小写转换
  4. 读《Android 安全架构深究》
  5. vsftpd 的配置项目
  6. 电脑小白和黑客的对白
  7. 快速学会require的使用
  8. html获取元素的rgb值,使用javascript提取支持的HTML或X11颜色名称及其RGB值的列表
  9. Git学习笔记:一台电脑上配置两个git账户
  10. 软件环境整理(pro、sit、test、pre、dev)
  11. win10 html字体设置,IT之家学院:如何解决Win10屏幕字体缩放模糊问题
  12. 数据通信最新技术复习
  13. 栈——后进先出(LIFO:last in first out)
  14. 勒索病毒肆虐的原因分析
  15. 【每日一练】21—CSS实现炫酷动画背景
  16. 2022 ICPC Gran Premio de Mexico 1ra Fecha (B、D、E、F)
  17. vue3-HTTP请求
  18. 计算机驱动安装的几个方法,不会安装驱动有福了,2个方法教你安装驱动程序,非常实用的知识...
  19. python append()方法
  20. flash引导层的应用

热门文章

  1. 执行execute时对象名 retime_record 无效_MyBatis 的执行流程怎么可以讲的这么透彻
  2. warning.js:7 Warning: [antdv: Table] Each record in dataSource of table should have a unique `key`
  3. python流量监控_用python中的pcapy实现网络流量监控
  4. css清除浮动的几种方法_CSS 分享几种传统布局方法[上]
  5. Java多线程(五) —— 线程并发库之锁机制
  6. excel转txt工具
  7. 【Networking】容器网络大观 SDN 资料汇总
  8. jquery通过attr取html里自定义属性原来这么方便啊
  9. c++中基本的语法问题
  10. WordPress的RSS订阅优化