文件处理

1 文件打开模式补充

with open('a.txt', mode='r+t', encoding='utf-8') as f:
print(f.read())
print(f.writable())
print(f.readable())
f.write("你好") with open('a.txt', mode='w+t', encoding='utf-8') as f:
print(f.writable())
print(f.readable())
f.write("你好")
res = f.read()
print("===> %s" % res) with open('a.txt', mode='a+t', encoding='utf-8') as f:
print(f.writable())
print(f.readable())
print(f.read()) f.flush()
print(f.name)
print(f.encoding)

2.1 文件操作之读操作

with open('a.txt', mode='rt', encoding='utf-8') as f:
line1 = f.readline()
print(line1)
line2 = f.readline()
print(line2) for line in f:
print(line) lines = f.readlines()
print(lines)

2.2 文件操作之写操作

with open('a.txt', mode='wt', encoding='utf-8') as f:
f.write("1111\n2222\n3333\n") for x in "hello":
f.write(x) f.writelines("hello") # f.write("hello") f.writelines(["111", "222", "333"])
f.writelines(["111\n", "222\n", "333\n"])

3 控制文件指针移动

3.1 前提

  • 文件内指针移动,除了t模式下的read(n)中n代表的是字符个数

  • 其他都是以bytes为单位的

with open('a.txt', mode='rt', encoding='utf-8') as f:
res = f.read(6)
print(res) with open('a.txt', mode='rb') as f:
res = f.read(8)
print(res)
print(res.decode('utf-8')) with open('a.txt', mode='r+', encoding='utf-8') as f:
f.truncate(8)

3.2 f.seek()

  • f.seek(移动的字节个数,模式)

  • 三种模式

    0:参照文件开头移动指针

    1:参照当前所在的位置移动指针

    2:参照文件末尾位置移动指针

  • 只有0模式可以在t下使用,1和2只能在b下使用

with open('a.txt', mode='a+b') as f:
print(f.tell()) # 查看指针在文件的第几个字节 with open('a.txt', mode='r+b') as f:
f.seek(0, 2)
print(f.tell()) with open('a.txt', mode='a+b') as f:
f.seek(-6, 2)
# print(f.read().decode('utf-8'))
print(f.read(3).decode('utf-8')) import time with open('a.txt', mode='rb') as f:
f.seek(0, 2)
while True:
line = f.readline()
if len(line) == 0:
time.sleep(0.1)
else:
print(line.decode('utf-8'), end="")

4 文件修改的两种方式

4.1 方式一

1、以r模式打开源文件,将源文件内容全部读入内存

2、在内存中修改完毕

3、以w模式打开源文件,将修改后的内容写入源文件

优点:不必大量占用硬盘资源

缺点:耗内存,需要足够的内存空间

with open('a.txt', mode='rt', encoding='utf-8') as f1:
data = f1.read()
res = data.replace('hello', '早上好')
with open('a.txt', mode='wt', encoding='utf-8') as f2:
f2.write(res)

4.2 方式二

1、以r模式打开源文件,然后以w模式打开一个临时文件

2、从源文件中读一行到内存中,修改完毕后直接写入临时文件,循环往复直到操作完毕所有行

3、删除源文件,将临时文件名改为源文件名

优点:没有对内存造成过度的占用

缺点:需要硬盘预留出足够的空间来存放临时文件

import os
with open('a.txt', mode='rt', encoding='utf-8') as src_f,\
open('.a.txt.swp', mode='wt', encoding='utf-8') as dst_f: for line in src_f:
dst_f.write(line.replace('你好', 'Hello')) os.remove('a.txt')
os.rename('.a.txt.swp', 'a.txt')

5 函数的基本使用

5.1 概述

1、什么是函数?

函数就是用来盛放代码的容器

​ 具备某一功能的工具-->工具

​ 事先准备好工具的过程-->函数的定义

​ 遇到应用场景,拿来就用-->函数的调用

2、为何要用函数?

解决问题

Ⅰ 可读性差

Ⅱ 拓展性差

3、如何用函数?

先定义后引用

5.2 基本使用

def say_hello():  # say_hello=函数的内存地址
print("======")
print("hello world")
print("======") print(say_hello) # <function say_hello at 0x00000241DA0273A0>
say_hello() x = 10 # x=10的内存地址
print(x)

5.3 步骤

# 函数定义阶段:只检测语法,不执行代码
# def foo():
# xxx
# print('from foo') # 函数调用阶段:执行函数体代码
# foo()

5.4 示例

# 示例1
def bar():
print('from bar') def foo():
print('from foo')
bar() foo()
# 示例二
def bar():
print('from bar')
foo() def foo():
print('from foo') bar()
示例三
def bar():
print('from bar')
foo() bar() def foo():
print('from foo')

5.5 函数定义的完整语法

  • def 函数名(参数1, 参数2, 参数3...):

    '''

    注释信息

    '''

    代码1

    代码2

    代码3

    return 返回值

  • 定义函数的三种形式

无参函数
def f1():
print("hello")
print("你好")
print("Hi")
f1() def login():
name = input('username>>>:').strip()
pwd = input('password>>>:').strip()
if name == "ccc" and pwd == '111':
print('ok')
else:
print('error') login()
有参函数
def login(name,pwd):
if name == "ccc" and pwd == "123":
print('ok')
else:
print('error') login("ccc","123")
login("ccc","1234") def f2(x, y):
print(x)
print(y) f2(111, 222) def add(x, y):
print(x+y) add(10, 20)
add(30, 40)
空函数
def login():
pass
def transfer():
pass
def withdraw():
pass
def check_balance():
pass
  • 调用函数的三种形式
def add(x, y):
z = x + y
return z # res = add(10, 20)
# print(res)
# res = len("hello")
# print(res)
# 1、语句形式
len("hello") # 2、表达式形式
res = len("hello") + 10
print(res) # 3、函数调用可以当作一个参数传给另外一个函数
print(add(5, 5)) res = add(add(1, 2), 3)
print(res)

5.6 函数的返回值

  • return作用1:控制返回值
Ⅰ 没有return-->默认返回就是None
def func():
print(111) res = func()
print(res) Ⅱ return 值-->返回就是那一个值
def max2(x, y):
if x > y:
return x
else:
return y res = max2(100, 200) * 5
print(res) Ⅲ return 值1,值2,值3--->返回的是一个元组
def func():
return [11, 22], 2, 3 res = func()
print(res, type(res)) # ([11, 22], 2, 3) <class 'tuple'>
  • return作用2:函数内可以有多个return,但只要执行一个就会立即种植函数的运行,并且会将return后的值当做本次调用的产品返回
def func():
print(111)
return 2201202
print(2222)
return 11112222
print(3333) res = func()
print(res) # 111 2201202

附录:a.txt

早上好玛卡巴卡
早上好汤姆波利伯
早上好小点点
早上好依古比古
早上好唔西迪西
早安哈呼呼
早安鸟儿
Hello叮叮车
Hello飞飞鱼

day007|python基础回顾7的更多相关文章

  1. python 基础回顾 一

    Python 基础回顾 可变类型:list ,dict 不可变类型:string,tuple,numbers tuple是不可变的,但是它包含的list dict是可变的. set 集合内部是唯一的 ...

  2. python基础回顾1

    定义 tuple(元组), list (表) #!/usr/bin/env python # encoding: utf-8 a = 10 #定义一直变量,无需声明 s1 = (2,1.3,'love ...

  3. python基础回顾

    1.第二个缺点就是代码不能加密.如果要发布你的Python程序,实际上就是发布源代码,这一点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows 上常见的xxx.exe ...

  4. python基础回顾笔记

    1.知道了什么是编程语言 2.知道了python.C#.Java都是语言的种类 3.python:有很多种 cpython.pypy.jpython... 4.python的执行方式有两种: 解释器 ...

  5. day001|python基础回顾

    1.python是一门编程语言 编程语言是人与计算机能够沟通的一种语言 人----------编程语言---------计算机 2.编程是: ①人将要做的事的步骤想清楚 ②找计算机能够听懂的语言将步骤 ...

  6. day002|python基础回顾2

    目录 00 上节课复习 01 基本数据类型 02 与用户交互 03 运算符 04 流程运算之if判断 05 流程判断之while循环 06 TEST 00 上节课复习 ""&quo ...

  7. python高级(1)—— 基础回顾1

    Python基础回顾 认识变量 在学习了之前的Python零基础入门系列[洗礼灵魂,修炼Python](说明一下,这个系列现在回过来再来看这个名字确实好土啊,然后有些知识点感觉还不太精准,后期看如果有 ...

  8. python学习笔记(1):python基础

    python基础回顾 1.Ipython魔术命令 %timeit //多次执行一条语句,并返回平均时间,%%time->多条语句,用于测试一条语句用了多少时间 %time //返回执行一条语句的 ...

  9. python爬虫主要就是五个模块:爬虫启动入口模块,URL管理器存放已经爬虫的URL和待爬虫URL列表,html下载器,html解析器,html输出器 同时可以掌握到urllib2的使用、bs4(BeautifulSoup)页面解析器、re正则表达式、urlparse、python基础知识回顾(set集合操作)等相关内容。

    本次python爬虫百步百科,里面详细分析了爬虫的步骤,对每一步代码都有详细的注释说明,可通过本案例掌握python爬虫的特点: 1.爬虫调度入口(crawler_main.py) # coding: ...

随机推荐

  1. 使用Node.js原生API写一个web服务器

    Node.js是JavaScript基础上发展起来的语言,所以前端开发者应该天生就会一点.一般我们会用它来做CLI工具或者Web服务器,做Web服务器也有很多成熟的框架,比如Express和Koa.但 ...

  2. request-promise post请求微信小程序云函数调用http

    微信小程序不支持http调用,但是可以通过服务器或者云函数实现,云函数相当于云服务器中的一段代码,可以使用http协议 首先要云函数安装request-promise,右键云函数,在终端中打开,输入n ...

  3. 【新阁教育】S7.NET+Log4Net+SQLSugar+MySQL搭建Iot平台

    1.搭建西门子S7仿真环境 新阁教育提醒您基于PLCSIM-Advanced搭建西门子S7仿真环境注意事项: 1.通过dotNet工控上位机公众号后台发送PLCSIM-Advanced获取软件 2.安 ...

  4. Linux 系统编程 学习:01-进程的有关概念 与 创建、回收

    Linux 系统编程 学习:01-进程的有关概念 与 创建.回收 背景 上一讲介绍了有关系统编程的概念.这一讲,我们针对 进程 开展学习. 概念 进程的身份证(PID) 每一个进程都有一个唯一的身份证 ...

  5. Oracle终极彻底卸载

    停止使用Oracle的服务 停用oracle服务,进入计算机管理,在服务中,找到oracle开头的所有服务,右击选择停止. 运行卸载Oracle数据库程序 一般情况运行Oracle自带的卸载程序,如使 ...

  6. 第4章 Function语意学

    第4章 Function语意学 目录 第4章 Function语意学 4.1 Member的各种调用方式 Nonstatic Member Function(非静态成员函数) virtual Memb ...

  7. 微信小程序开发实战(云开发)--资产管理工具

    添加首页 menu页面 截图展示 menu.js源码 // pages/menu/menu.js Page({ /** * 页面的初始数据 */ data: { }, /** * 生命周期函数--监听 ...

  8. python的数据处理一

    def load_data(filename): features = [] labels = [] f = open(filename, encoding='utf-8') medical = js ...

  9. 12装饰器及*args,**kwargs

    注:参数和返回值都是一个函数. 1,无参数 def decotare1(func): def wrapper(): print("First") func() return wra ...

  10. CVE-2020-0769逆向分析

    受影响版本: 系统 版本 Microsoft Windows 10 Windows 10 1607 Windows 10 1709 Windows 10 1803 Windows 10 1809 Wi ...