当前位置: 首页 > news >正文

【python零基础入门学习】python基础篇之文件对象open、模块以及函数的使用(三)

 本站以分享各种运维经验和运维所需要的技能为主

《python》:python零基础入门学习

《shell》:shell学习

《terraform》持续更新中:terraform_Aws学习零基础入门到最佳实战

《k8》暂未更新

《docker学习》暂未更新

《ceph学习》ceph日常问题解决分享

《日志收集》ELK+各种中间件

《运维日常》持续更新中

文件对象

操作步骤: 打开 ,  读写 , 关闭

open内建函数:

访问模式:

# cp /etc/passwd /tmp/
>>> f = open('/tmp/password')  -----默认r模式,文件不存在则报错
Traceback (most recent call last):File "<stdin>", line 1, in <module>
FileNotFoundError: [Errno 2] No such file or directory: '/tmp/password'
>>> f = open('/tmp/passwd')
>>> data = f.
f.buffer          f.encoding        f.isatty(         f.newlines        f.readlines(      f.truncate(
f.close(          f.errors          f.line_buffering  f.read(           f.seek(           f.writable(
f.closed          f.fileno(         f.mode            f.readable(       f.seekable(       f.write(
f.detach(         f.flush(          f.name            f.readline(       f.tell(           f.writelines(
>>> data = f.read() 
>>> data
>>> data = f.read() 文件指针已到结尾,再读取将为空串-----指针没有回头草
>>> data
'' 
>>> f.close()
>>> f = open('/tmp/passwd')
>>> data = f.read()
>>> data
>>> f.read(4)---读取4字节
'root'
>>> f.read(6)---继续往后读6字节
':x:0:0'
>>> f.readline()读到换行符\n结束 ----类型是 str  字符类型
>>> f.readlines()--# 把每一行数据读出来放到列表中 
':root:/root:/bin/bash\n'
>>> data = f.readlines()
>>> type(data)
<class 'list'>
>>> data###############最常用的读取文件的方法#################
f = open('/tmp/passwd')
for line in f:print(line, end='')
f.close()##############################
f = open('图片地址', 'rb')  # 打开非文本文件要加参数b
f.read(4096)
f.close()
[root@room9pc01 ~]# eog me1.png
打开图片
*************文本也可以用rb的方式打开*******
#一个英文字符正好占一个字节,就用英文字符本身去显示
但是一个汉子再utf9编码中占3字节,没有办法把一个字节表示成字符,所以就用16进制数表示
# cat /tmp/a.txt 
hello一月份
>>> f = open('/tmp/a.txt','rb')
>>> f.read()
b'hello\xe4\xb8\x80\xe6\x9c\x88\xe4\xbb\xbd\n'
>>> s1 = b'\xe4\xb8\x80'
>>> s1
b'\xe4\xb8\x80'
>>> s1.decode()
'一'
f.close()
>>> s2 = '月'
>>> s2.encode()
b'\xe6\x9c\x88'
*******************************************##################################
f = open('/tmp/myfile', 'w')  # 'w'打开文件,如果文件不存在则创建
f.write('hello world!\n')
f.flush()  # 立即将缓存中的数据同步到磁盘
f.writelines(['2nd line.\n', 'new line.\n'])
f.close()  # 关闭文件的时候,数据保存到磁盘##############################
with语句结束时,自动关闭文件with open('/tmp/passwd') as f:print(f.readline())#########################
移动指针的位置以及查看指针的位置
--f = open('/tmp/passwd', 'rb') ---一定要rbf = open('/tmp/passwd')
f.tell()  # 查看文件指针的位置
f.readline()
f.tell()
f.seek(0, 0)  # 第一个数字是偏移量,第2位是数字是相对位置。# 相对位置0表示开头,1表示当前,2表示结尾
f.seek(-5,2)   #左为负   右为正f.tell()
f.close()

拷贝文件:

# f1 = open('/bin/ls', 'rb')
# f2 = open('/tmp/list', 'wb')
# 
# data = f1.read()
# f2.write(data)
# 
# f1.close()
# f2.close()
[root@room9pc01 tmp]# md5sum /bin/ls /tmp/list 
a78c13d806e594dc4014d145d689f23d  /bin/ls
a78c13d806e594dc4014d145d689f23d  /tmp/listsrc_fname = '/bin/ls'
dst_fname = '/tmp/list2'src_fobj = open(src_fname, 'rb')
dst_fboj = open(dst_fname, 'wb')#就像商品供货的例子while 1:data = src_fobj.read(4096)if data == b'':
#if len(data) == 0:
#if not data : 空串(b'')为假,取反为真breakelse:dst_fboj.write(data)src_fobj.close()
dst_fboj.close()

函数:

  1. 使用def定义

  2. 调用函数务必使用()

  3. 函数一般都需要有一个返回值

  • 返回值使用return关键字指定

  • 没有return默认返回None

>>> def add():
...     result = 10 + 20
... 
>>> a = add()
>>> print(a)
None
------通过上面的例子可以知道,需要return返回值,不然只会默认输出None----###########函数############
def mk_fib():fib = [0,1]  #函数内部的变量是局部变量,只能在函数内使用n = int(input('长度: '))for i in range(n - 2):fib.append(fib[-1] + fib[-2])return fib#返回的是fib代表的列表,而不是返回变量a = mk_fib()#调用函数时,必须用(),调用函数就是执行函数的代码
print(a)
b = [i * 2 for i in a]
print(b)
with open('/tmp/fib.txt', 'w') as fobj:# 需要把列表转成str字符串后再写入文件,否则报错fobj.write(str(a))
#############################

函数参数:

传递参数:


def mk_fib(n):fib = [0,1]  #函数内部的变量是局部变量,只能在函数内使用for i in range(n - 2):fib.append(fib[-1] + fib[-2])return fib#返回的是fib代表的列表,而不是返回变量a = mk_fib(5)#调用函数时,必须用(),调用函数就是执行函数的代码
print(a)
b = [i * 2 for i in a]
print(b)
with open('/tmp/fib.txt', 'w') as fobj:# 需要把列表转成str字符串后再写入文件,否则报错fobj.write(str(a))n = int(input('长度: '))
c = mk_fib(n)
print(c)

位置参数: 

位置参数保存在sys模块的argv列表中

import sys

print(sys.argv)

# python3 01.py xixi haha 123

['01.py', 'xixi', 'haha', '123']

默认参数:

###默认参数###
def pstar(num = 20):print('*' * num)pstar()
pstar(50)

 拷贝函数:

import sys
def copy(src_fname, dst_fname):src_fobj = open(src_fname, 'rb')dst_fboj = open(dst_fname, 'wb')#就像商品供货的例子while 1:data = src_fobj.read(4096)if data == b'':#if len(data) == 0:#if not data : 空串(b'')为假,取反为真breakelse:dst_fboj.write(data)src_fobj.close()dst_fboj.close()copy(sys.argv[1],sys.argv[2])(nsd1907) [root@room9pc01 day03]# python 01.py /etc/fstab /tmp/cp.txt
(nsd1907) [root@room9pc01 day03]# md5sum /etc/fstab /tmp/cp.txt 
48ff680b643791cafc6d825ea978321f  /etc/fstab
48ff680b643791cafc6d825ea978321f  /tmp/cp.txt

模块:

  • 一个以.py结尾的python文件就是一个模块

  • 文件代码的物理组织形式,模块是逻辑形式

  • 将文件名的.py扩展名去除,得到的就是模块名

  • 模块名也是一个名词,它也要满足相关的约定(首字符:字母下划线,后续字母数字下划线)

vim star.py
hi = 'hello shabichao'
def pstar(n=30):print('*' * n)>>> import star
>>> star.
star.hi      star.pstar(  
>>> star.hi
'hello shabichao'
>>> star.pstar()
******************************
>>> star.pstar(50)
**************************************************

导入模块: 

# import star   # 常用
# print(star.hi)
# star.pstar()
# from random import choice, randint   # 常用
# print(choice('abcd'))
# print(randint(1, 100))
# import sys, getpass   # 不常用
import getpass as gp    # 导入模块时,给模块取别名,不常用
upass = gp.getpass()
print(upass)

模块特性:

(nsd1907) [root@room9pc01 day03]# echo 'print(__name__)' > foo.py
(nsd1907) [root@room9pc01 day03]# echo 'import foo' > bar.py
(nsd1907) [root@room9pc01 day03]# cat foo.py 
print(_name_)
(nsd1907) [root@room9pc01 day03]# cat bar.py 
import foo
(nsd1907) [root@room9pc01 day03]# python3 foo.py 
__main__
(nsd1907) [root@room9pc01 day03]# python3 bar.py 
foo#####################调用模块或者之后使用py脚本######################
hi = 'hello shabichao'#全局变量之后才可以调用
def pstar(n=30):print('*' * n)if __name__ == '__main__':print(hi)pstar()pstar(50)

生成随机密码:(作业)

def mk_pass(n=8):import stringimport randomresult = ''for i in range(1,n+1):#ms = str(random.choice(range(0,10)))inn = random.choice(range(0,94))all_str = string.printableresult +=  all_str[inn]return resultif __name__ == '__main__':print(mk_pass())print(mk_pass(4))print(mk_pass(10))方法二:from random import choice
import stringall_str = string.printabledef mk_pass2(n=8):result = ''for i in range(n):ch = choice(all_str)result += chreturn resultif __name__ == '__main__':print(mk_pass2())print(mk_pass2(4))print(mk_pass2(10))

 

相关文章:

【python零基础入门学习】python基础篇之文件对象open、模块以及函数的使用(三)

本站以分享各种运维经验和运维所需要的技能为主 《python》&#xff1a;python零基础入门学习 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8》暂未更新 《docker学习》暂未更新 《ceph学习》ceph日常问题解…...

【JavaEE】_CSS常用属性值

目录 1. 字体属性 1.1 设置字体家族 font-family 1.2 设置字体大小 font-size 1.3 设置字体粗细 font-weight 1.4 设置字体倾斜 font-style 2. 文本属性 2.1 设置文本颜色 color 2.2 文本对齐 text-align 2.3 文本装饰 text-decoration 2.4 文本缩进 text-indent 2.…...

vue组件库开发,webpack打包,发布npm

做一个像elment-ui一样的vue组件库 那多好啊&#xff01;这是我前几年就想做的 但webpack真的太难用&#xff0c;也许是我功力不够 今天看到一个视频&#xff0c;早上6-13点&#xff0c;终于实现了&#xff0c;呜呜 感谢视频的分享-来龙去脉-大家可以看这个视频&#xff1a;htt…...

Java中快速排序的优化技巧:随机取样、三数取中和插入排序

目录 快速排序基础 优化1&#xff1a;随机取样 优化2&#xff1a;三数取中 优化3&#xff1a;插入排序 总结&#xff1a; 快速排序&#xff08;Quick Sort&#xff09;是一种高效的排序算法&#xff0c;它的平均时间复杂度为O(n log n)。然而&#xff0c;在某些情况下&…...

【leetcode 力扣刷题】删除字符串中的子串or字符以满足要求

删除字符串中的子串或者字符以满足题意要求 1234. 替换子串得到平衡字符串680. 验证回文串917. 仅仅反转字母 1234. 替换子串得到平衡字符串 题目链接&#xff1a;1234. 替换子串得到平衡字符串 题目内容&#xff1a; 题目中给出了平衡字符串的定义——只有’Q’&#xff0c;…...

【Unity基础】3.脚本控制物体运动天空盒

【Unity基础】3.脚本控制物体运动&天空盒 大家好&#xff0c;我是Lampard~~ 欢迎来到Unity基础系列博客&#xff0c;所学知识来自B站阿发老师~感谢 &#xff08;一&#xff09;搭建开发环境 &#xff08;1&#xff09;下载visual studio 在我们下载unity编译器的时候&…...

Spring MVC拦截器

拦截器&#xff08;Interceptor&#xff09;是 Spring MVC 提供的一种强大的功能组件。它可以对用户请求进行拦截&#xff0c;并在请求进入控制器&#xff08;Controller&#xff09;之前、控制器处理完请求后、甚至是渲染视图后&#xff0c;执行一些指定的操作。 在 Spring MV…...

ClickHouse的Join算法

ClickHouse的Join算法 ClickHouse是一款开源的列式分析型数据库&#xff08;OLAP&#xff09;&#xff0c;专为需要超低延迟分析查询大量数据的场景而生。为了实现分析应用可能达到的最佳性能&#xff0c;分析型数据库&#xff08;OLAP&#xff09;通常将表组合在一起形成一个…...

java面试题-RabbitMQ面试题

RabbitMQ面试题 面试官&#xff1a;RabbitMQ-如何保证消息不丢失 候选人&#xff1a; 嗯&#xff01;我们当时MYSQL和Redis的数据双写一致性就是采用RabbitMQ实现同步的&#xff0c;这里面就要求了消息的高可用性&#xff0c;我们要保证消息的不丢失。主要从三个层面考虑 第一…...

数据仓库-核心概念

数据仓库 数据仓库&#xff0c;英文名称为Data Warehouse&#xff0c;可简写为DW或DWH。数据仓库&#xff0c;是为企业所有级别的决策制定过程&#xff0c;提供所有类型数据支持的战略集合。它是单个数据存储&#xff0c;出于分析性报告和决策支持目的而创建。为需要业务智能的…...

java中的实体类

在Java与数据库交互时&#xff0c;设计实体类有以下几个原因&#xff1a; 1、对象关系映射&#xff08;ORM&#xff09;&#xff1a;实体类提供了一种将数据库中的表映射为Java对象的方式。这样&#xff0c;开发人员可以使用面向对象的方式操作数据库&#xff0c;而无需编写大…...

使用Puppeteer爬取地图上的用户评价和评论

导语 在互联网时代&#xff0c;获取用户的反馈和意见是非常重要的&#xff0c;它可以帮助我们了解用户的需求和喜好&#xff0c;提高我们的产品和服务质量。有时候&#xff0c;我们需要从地图上爬取用户对某些地点或商家的评价和评论&#xff0c;这样我们就可以分析用户对不同…...

GLSL ES着色器语言 使用矢量和矩阵的相关规范

目录 矢量和矩阵类型 下面是声明矢量和矩阵的例子&#xff1a; 赋值和构造 矢量构造函数 矩阵构造函数 构造矩阵的几种方式 访问元素 . 运算符 矢量的分量名 &#xff3b; &#xff3d;运算符 运算符 矢量和矩阵可用的运算符 矢量和矩阵相关运算 矢量和浮点数的…...

Himall商城- web私有方法

目录 1 Himall商城- web私有方法 1.1 /// 获取售价 1.1.1 //商品批量销售价 1.1.2 //获取组合购的价格 Himall商城- web私有方法 #region web私有方法 /// <summary> /// 获取售价 /// <para>己计算会员折</para> /// </summary> /// <para…...

Spring Boot 整合 Redis,使用 RedisTemplate 客户端

文章目录 一、SpringBoot 整合 Redis1.1 整合 Redis 步骤1.1.1 添加依赖1.1.2 yml 配置文件1.1.3 Config 配置文件1.1.4 使用示例 1.2 RedisTemplate 概述1.2.1 RedisTemplate 简介1.2.2 RedisTemplate 功能 二、RedisTemplate API2.1 RedisTemplate 公共 API2.2 String 类型 A…...

Tomcat 接收请求并传递给工作线程池流程

文章目录 Tomcat 接收请求并传递给工作线程池流程接收 socket 连接 org.apache.tomcat.util.net.SocketProcessorBase#reset结论 Tomcat 接收请求并传递给工作线程池流程 接收 socket 连接 有两个线程 http-nio-8080-ClientPoller-0/1 &#xff08;下文称为 clientPoller&…...

在Linux系统上用C++将主机名称转换为IPv4、IPv6地址

在Linux系统上用C将主机名称转换为IPv4、IPv6地址 功能 指定一个std::string类型的主机名称&#xff0c;函数解析主机名称为IP地址&#xff0c;含IPv4和IPv6&#xff0c;解析结果以std::vector<std::string>类型返回。解析出错或者解析失败抛出std::string类型的异常消…...

【硬件设计】硬件学习笔记二--电源电路设计

硬件学习笔记二--电源电路设计 一、LDO设计1.1 LDO原理1.2 LDO参数1.3 应用 二、DC-DC设计2.1 DC-DC原理2.2 DC-DC参数介绍2.4 DC-DC设计要点2.5 DC-DC设计注意事项 写在前面&#xff1a;本篇笔记来自王工的硬件工程师培训课程&#xff0c;想要学硬件的同学可以去腾讯课堂直接搜…...

day34 集合总结

集合总结 一、概述 作用&#xff1a;存储对象的容器&#xff0c;代替数组的&#xff0c;使用更加的便捷 所处的位置&#xff1a;java.util 体系结构 二、Collection 内部的每一个元素都得是引用数据类型 常用方法 add(Object o) 添加元素 addAll(Collection c) 将指定集…...

【JAVA】 图书管理系统(javaSE简易版 内含画图分析) | 期末大作业课程设计

作者主页&#xff1a;paper jie 的博客 本文作者&#xff1a;大家好&#xff0c;我是paper jie&#xff0c;感谢你阅读本文&#xff0c;欢迎一建三连哦。 本文录入于《JAVA》专栏&#xff0c;本专栏是针对于大学生&#xff0c;编程小白精心打造的。笔者用重金(时间和精力)打造&…...

挑战杯推荐项目

“人工智能”创意赛 - 智能艺术创作助手&#xff1a;借助大模型技术&#xff0c;开发能根据用户输入的主题、风格等要求&#xff0c;生成绘画、音乐、文学作品等多种形式艺术创作灵感或初稿的应用&#xff0c;帮助艺术家和创意爱好者激发创意、提高创作效率。 ​ - 个性化梦境…...

零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?

一、核心优势&#xff1a;专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发&#xff0c;是一款收费低廉但功能全面的Windows NAS工具&#xff0c;主打“无学习成本部署” 。与其他NAS软件相比&#xff0c;其优势在于&#xff1a; 无需硬件改造&#xff1a;将任意W…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

超短脉冲激光自聚焦效应

前言与目录 强激光引起自聚焦效应机理 超短脉冲激光在脆性材料内部加工时引起的自聚焦效应&#xff0c;这是一种非线性光学现象&#xff0c;主要涉及光学克尔效应和材料的非线性光学特性。 自聚焦效应可以产生局部的强光场&#xff0c;对材料产生非线性响应&#xff0c;可能…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

连锁超市冷库节能解决方案:如何实现超市降本增效

在连锁超市冷库运营中&#xff0c;高能耗、设备损耗快、人工管理低效等问题长期困扰企业。御控冷库节能解决方案通过智能控制化霜、按需化霜、实时监控、故障诊断、自动预警、远程控制开关六大核心技术&#xff0c;实现年省电费15%-60%&#xff0c;且不改动原有装备、安装快捷、…...

《用户共鸣指数(E)驱动品牌大模型种草:如何抢占大模型搜索结果情感高地》

在注意力分散、内容高度同质化的时代&#xff0c;情感连接已成为品牌破圈的关键通道。我们在服务大量品牌客户的过程中发现&#xff0c;消费者对内容的“有感”程度&#xff0c;正日益成为影响品牌传播效率与转化率的核心变量。在生成式AI驱动的内容生成与推荐环境中&#xff0…...

oracle与MySQL数据库之间数据同步的技术要点

Oracle与MySQL数据库之间的数据同步是一个涉及多个技术要点的复杂任务。由于Oracle和MySQL的架构差异&#xff0c;它们的数据同步要求既要保持数据的准确性和一致性&#xff0c;又要处理好性能问题。以下是一些主要的技术要点&#xff1a; 数据结构差异 数据类型差异&#xff…...

DIY|Mac 搭建 ESP-IDF 开发环境及编译小智 AI

前一阵子在百度 AI 开发者大会上&#xff0c;看到基于小智 AI DIY 玩具的演示&#xff0c;感觉有点意思&#xff0c;想着自己也来试试。 如果只是想烧录现成的固件&#xff0c;乐鑫官方除了提供了 Windows 版本的 Flash 下载工具 之外&#xff0c;还提供了基于网页版的 ESP LA…...