【0808 | Day 11】文件的高级应用/修改以及函数的定义/使用/参数
文件的高级应用
一、三种模式
'r+'模式
with open('test.py','r',encoding = 'utf8') as fr:
print(fr.writable())
fr.write('x=10')
print(fr.write())'w+'模式
with open('test.py','w+',encoding = 'utf8') as fr:
print(fr.readable)
fr.write('x=10')
print(fr.read())'a+'模式
with open('test.py','a+',encoding = 'utf8') as fr:
print(fr.readable)
print(fr.writable())
指针的应用
一、文件的内置方法
seek( offset,whence): offset代表文件指针的偏移量,单位是字节
with open('test.txt','r',encoding = 'utf8') as fr:
fr.seek(1) #偏移1位,默认从文件头开始
fr.seek(0,2) #2表示从文件末开始,指针指向最末
fr.seek(1,0) #0表示从文件头开始,偏移1位tell( ):每次统计都是从文件开头到当前指针所在位置
with open('test.txt','r',encoding = 'utf8') as fr:
#fr.seek(2,0)
print(fr.tell()) #从0到2,即2read(n): 只有在模式下的read(n),n代表的是字符个数,除此之外,其他但凡涉及文件指针的都是字节个数(读取个数)
with open('test.txt','r',encoding = 'utf8') as fr:
print(fr.read(n))truncate(n): truncate(n)是截断文件,所以文件的打开方式必须可写,但是不能用w或w+等方式打开,因为那样直接清空文件了,所以truncate()要在r+或a或a+等模式下测试效果。它的参照物永远是文件头。并且truncate()不加参数,相当于清空文件。
with open('test.txt','a',encoding = 'utf8') as fr:
fr.truncate(2) #第二个字符后的内容清空 #注意:如果内容是“中奖啦”,2个字节一个字,如果truncate(3),则'中'之后乱码
二、相关知识:覆盖
#假设test.txt内容为:中中大大奖啦
with open('test.txt','rt',encoding = 'utf8') as fr:
fr.seek(6,0)
fr.write('小小小') #按理说应该变为“中中小小大大奖啦”
print(fr.read())
#结果为“中中小小奖啦”
注意:因为插入字符会占用内存,所以系统一般都是覆盖。
文件修改的两种方式
一、方式一:
import os
with open('test.py','r',encoding='utf8') as fr,\
open('test_swap.py','w',encoding='utf8') as fw:
data = fr.read()
data = data.replace('sb','dsb')
fw.write(data)
os.remove('test.py') #删除文件
os.rename('test_swap.py','test.py') #重命名文件
二、方式二:
import os
with open('test.py','r',encoding='utf8') as fr,\
open('test_swap.py','w',encoding='utf8') as fw:
for i in fr:
i = i.replace('sb','dsb')
fw.write(i)
os.remove('test.py') #删除文件
os.rename('test_swap.py','test.py') #重命名文件
函数的定义
一、登录&注册
register( )注册:
usn = input("请输入注册姓名:").strip()
pwd = input("请输入注册密码:").strip()
with open('user_info.txt','a',encoding='utf8') as fa:
fa.write(f'{usn}:{pwd}\n')
for i in range(2):
again_pwd = input("请再次输入密码:").strip()
if again_pwd == pwd:
print('恭喜你注册成功啦~')
else:
print("注册失败~")
continue
break
login( )登录:
inp_usn = input("请输入注册姓名:").strip()
inp_pwd = input("请输入注册密码:").strip()
with open('user_info.txt', 'r', encoding='utf8') as fr:
data = fr.read()
user_list = data.split("|")
print(user_list)
user_info = f'{inp_usn}:{inp_pwd}'
if user_info in user_list:
print('恭喜你啦~')
else:
print('登录失败~')
二、函数的使用
def 函数名(param1、param2……): #定义阶段只检测语法
"""
函数功能的描述信息
:param1:描述
:param2:描述
:return:返回值
"""
code 1
code 2
code 3
...
return 返回值
函数名() #会显示语法错误
函数:注册
# 注册功能函数
def register():
"""注册功能"""
username = input('username: ').strip()
pwd = input('password: ').strip()
with open('38a.txt', 'a', encoding='utf8') as fa:
fa.write(f"{username}:{pwd}\n")
fa.flush()
register()
# 复用
register()
register()
函数:登录
# 登录功能函数
def login():
"""登录功能"""
inp_username = input('username: ').strip()
inp_pwd = input('password: ').strip()
with open('38a.txt', 'rt', encoding='utf8') as fr:
for user_info in fr:
user_info = user_info.strip('\n')
user_info_list = user_info.split(':')
if inp_username == user_info_list[0] and inp_pwd == user_info_list[1]:
print('login successful')
break
else:
print('failed')
login()
三、函数的返回
注意:print返回的值不可调用,而return的值可以继续调用
定义函数的三种形式
一、无参函数
可以单独使用,无变量
def add(x,y):
print(int(x)+int(y)) x = input('number1: ')
y = inout('number2: ')
add(x,y)
二、有参函数
不能单独使用,要加参数(配件)
def func():
x = input('number1: ')
y = inout('number2: ')
print(int(x)+int(y))
func()
三、空函数
只是定义函数,什么都没有
def func():
pass
函数的参数
一、形参(位置形参)
定义阶段,占个位而已
def add(x,y): #此处的x, y是形参
二、实参(位置实参)
调用阶段,具有实际意义
def add(x,y):
<代码块> add(x,y) #此处的x, y是实参
注意:位置形参和位置实参是一一对应的。
三、关键字实参
注意:函数的参数尽量不超过两个
def shopping(name = 'Nick'):
goods_dict = {1:'car',2:'house',3:'job'}
print(f'恭喜{name},得到一个{goods_dict[3]}!') shopping() #不输入
shopping() #输入'John',将会取代默认形参
#恭喜Nick,得到一个job!
#恭喜John,得到一个job!
#关键字实参
def shopping(x,name = 'Nick'): #默认形参放后面
goods_dict = {1:'car',2:'house',3:'job'}
print(f'恭喜{name},得到一个{goods_dict[3]}!') shopping(name = 'Nick',x= 1)
shopping(1,'Nick')
【0808 | Day 11】文件的高级应用/修改以及函数的定义/使用/参数的更多相关文章
- ALTER FUNCTION - 修改一个函数的定义
SYNOPSIS ALTER FUNCTION name ( [ type [, ...] ] ) RENAME TO newname DESCRIPTION 描述 ALTER FUNCTION 修改 ...
- chmod修改文件的权限/chown修改文件和目录的所有者
ll指令的显示的信息为(当前目录下只有nameservice1一个目录): drwxr-xr-x 3 hdfs hdfs 4096 4月 14 16:19 nameservice1 上述信息分别表示: ...
- ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改
原文:ASP.NET MVC+EF框架+EasyUI实现权限管理系列(11)-验证码实现和底层修改 ASP.NET MVC+EF框架+EasyUI实现权限管系列 (开篇) (1):框架搭建 ...
- windows 下文件的高级操作
本文主要说明在Windows下操作文件的高级方法,比如直接读写磁盘,文件的异步操作,而文件普通的读写方式在网上可以找到一大堆资料,在这也就不再进行专门的说明. 判断文件是否存在 在Windows中并没 ...
- 基于NSString处理文件的高级类
基于NSString处理文件的高级类 我已经把处理文件的类简化到了变态的程度,如果你还有更简洁的方法,请告知我,谢谢! 使用详情: 源码: // // NSString+File.h // Maste ...
- chmod修改文件的权限/chown修改文件和目录的所有者(转)
ll指令的显示的信息为(当前目录下只有nameservice1一个目录): drwxr-xr-x 3 hdfs hdfs 4096 4月 14 16:19 nameservice1 上述信息分别表示: ...
- linux ,mac连接, git pull error, chmod修改文件的权限/chown修改文件和目录的所有者
去项目目录下 启动服务 setsid npm start & Mac下如何用SSH连接远程Linux服务器 https://www.cnblogs.com/littleBit/p/536280 ...
- php上传大文件时,服务器端php.ini文件中需要额外修改的选项
几个修改点: 1.upload_max_filesize 上传的最大文件 2.post_max_size 上传的最大文件 3.max_execution_time 修改为0表示无超时,一直等待 4.m ...
- touch — 设定文件的访问和修改时间
PHP touch 设定文件的访问和修改时间 touch (PHP 4, PHP 5) touch — 设定文件的访问和修改时间 说明 bool touch ( string $filename [, ...
随机推荐
- 谈谈 c# 对象初始化问题
C#对象初始化 之前在学习过程中只是知道该如何初始化对象,但是却不明白为何要这么做,不这么做有什么问题. 现在就针对我最近遇到的问题(定义了全局字节数组没有初始化,然后在多线程里头使用,然后就一直报n ...
- c++ 函数知识点汇总
c++ 函数知识点汇总 swap函数 交换两个数组元素 比如 swap(a[i],a[j]); 就是交换a[i] 和 a[j] 的值 strcpy() 复制一个数组元素的值到另一个数组元素里 strc ...
- 自己实现定制自己的专属java锁,来高效规避不稳定的第三方
java juc 包下面已经提供了很多并发锁工具供我们使用,但在日常开发中,为了各种原因我们总是会用多线程来并发处理一些问题,然而并不是所有的场景都可以使用juc 或者java本身提供的锁来方便的帮助 ...
- JAVA超级简单的爬虫例子(1)
爬取整个页面的数据,并进行有效的提取信息,注释都有就不废话了: public class Reptile { public static void main(String[] args) { Stri ...
- Java 代码界 3% 的王者?看我是如何解错这 5 道题的
前些日子,阿里妹(妹子出题也这么难)发表了一篇文章<悬赏征集!5 道题征集代码界前 3% 的超级王者>——看到这个标题,我内心非常非常激动,因为终于可以证明自己技术很牛逼了. 但遗憾的是, ...
- 算法与数据结构基础 - 堆(Heap)和优先级队列(Priority queue)
堆基础 堆(Heap)是具有这样性质的数据结构:1/完全二叉树 2/所有节点的值大于等于(或小于等于)子节点的值: 图片来源:这里 堆可以用数组存储,插入.删除会触发节点shift_down.shif ...
- vs查看派生类
把类名拷贝到类视图中,点“派生类型”可看到此类的所有派生类.
- delegate委托的例子,实现对Form中控件的更新
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; usin ...
- 个人永久性免费-Excel催化剂功能第100波-透视多行数据为多列数据结构
在数据处理过程中,大量的非预期格式结构需要作转换,有大家熟知的多维转一维(准确来说应该是交叉表结构的数据转二维表标准数据表结构),也同样有一些需要透视操作的数据源,此篇同样提供更便捷的方法实现此类数据 ...
- Flume框架的学习使用
Flume框架的学习使用 Flume简介 Flume提供一个分布式的,可靠的,对大数据量的日志进行高效收集.聚集.移动的服务. Flume基于流失架构,容错性强,也很灵活简单 Flume,kafka用 ...