进入python的世界_day10_python基础——了解一些文件的操作、函数的介绍、函数的语法、函数的定义等
一、文件内光标的移动实战演练(了解)
- 文件监控系统
把光标控制在末尾,可以监测一个文件是否有新东西添加进来
import time
with open(r'userinfo.txt', 'rb') as f:
f.seek(0, 2)
while True:
line = f.readline()
if len(line) == 0:
time.sleep(1)
else:
print(line.decode('utf8'), end='')
______________________________________
with open(r'userinfo.txt', 'a', encoding='utf8') as f: # 注意!编码模式一定要带上!不然乱码!
f.write('天气不错\n')
_________________________________
先执行1,1会自动等待,这时候执行2,1就打印出来了2新增加的内容
二、计算机硬盘存取数据的原理——针对机械硬盘
- 这个展开就太深奥了,就简单理解硬盘的工作原理是利用特定的磁粒子的极性来记录数据,磁头在读取数据时,将磁粒子的不同极性转换成不同的电脉冲信号,再利用数据转换器将这些原始信号变成电脑可以使用的数据,写的操作正好与此相反。
- 因为可以看成是对硬盘的雕刻,本质上来说,写好数据后,占用了一块硬盘的空间,是没法直接嫁接之类的,只能覆盖或者重写(长度需一致)
- 机械硬盘格式化(简单)后,数据是还在硬盘上的,但是指向这个数据的目录标记被删除了,所以没法显示出来这个数据,当系统需要空间来写入另一个文件,它就会利用可用空间并在其中保存另一个文件。 到那时,实际数据才真正消失了
- 所以装系统时都要先分区,建立引导区
三、文件内容修改(了解)
-
覆盖写
先存为一个变量名,然后replace.(原,改)替换掉,可能会内存溢出(因为要先一次性读取完)
with open(r'a.txt', 'r', encoding='utf8') as f:
data = f.read()
with open(r'a.txt', 'w', encoding='utf8') as f1:
f1.write(data.replace('jason', 'tony'))
-
换地写
(使用模块,暂时没学)搞一个新文件,把旧文件内容复制过去,然后删除旧文件,重命名新文件
import os
with open('a.txt', 'r', encoding='utf8') as read_f, \
open('.a.txt.swap', 'w', encoding='utf-8') as write_f:
for line in read_f:
write_f.write(line.replace('tony', 'kevinSB'))
四、函数(重点)
-
函数的介绍
函数就是相当于一个工具,相同的代码(不一定是长得一模一样)在不同的位置可以反复使用执行能简化冗余的步骤
函数的使用必须遵循一个原则: 先定义,后调用
定义阶段只检测语法,不执行代码(不会报错先)
-
如何用
先定义:
def 函数名(参数1,参数2,...): >>>函数名不框定,但是要见名知意
"""文档描述""" >>>解释这个函数干嘛用,推荐写,类似说明书
函数体 >>>核心部分
return 值 >>>函数执行后给到的反馈,可以不写默认返回None,函数碰到return会立即结束 (如果多个数据值会组成元组返回)
-
函数的分类
-
内置函数(pycharm)
提前给你定义好了 直接使用即可,不用深究底层代码
-
自定义——无参函数
函数名( ) >>>括号内无数据,意思是不需要传递参数(变量名)
比如说:
def done (): print('嘿嘿嘿') print('嘿嘿嘿') done() >>>> 嘿嘿嘿 嘿嘿嘿
-
自定义——有参函数
函数名(x, y) >>>括号内有数据,意思是需要传递参数(变量名)
比如说:
def done(x, y): # 指定两个参数得被传递过来 print(x, y) done(1, 2)
-
自定义——空函数
函数名( ) :
'''''解释下"""
pass >>>括号内可有可无数据,换行带注释再换行 带pass,意思是先空着,有缘再写,一般用于搭框架时
-
-
函数的参数
-
形式参数——给人参考的,写在定义阶段括号内的参数
-
实际参数——使用者调用时填写的,写在调用阶段括号内
快速理解:形参类似变量名,实参类似数据值,在调用阶段实参临时和形参绑定,函数结束运行后立马断开
-