【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))

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/74571.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】string类模拟实现上篇(附完整源码)

目录 前言1. string的基本结构2. 构造函数、析构函数2.1 构造函数的实现2.1.1带参构造函数 2.2析构函数2.3无参构造函数2.4无参和带参构造函数合并 3. string的遍历3.1 operator[ ]3.2迭代器模拟实现 (简单实现&#xff09;3.3 const迭代器模拟实现 4. 数据的增删查改4.1 reser…

2、在Windows 10中安装和配置 PostgreSQL 15.4

一、PostgreSQL 安装前简介 PostgreSQL&#xff08;通常简称为PG SQL&#xff09;是一个强大、开源的关系型数据库管理系统&#xff08;DBMS&#xff09;&#xff0c;它具有广泛的功能和可扩展性&#xff0c;被广泛用于企业和开发项目中,PostgreSQL 具有如下一些关键特点&…

【云原生系列】Docker学习

目录 一、Docker常用命令 1 基础命令 2 镜像命令 2.1 docker images 查看本地主机的所有镜像 2.2 docker search 搜索镜像 2.3 docker pull 镜像名[:tag] 下载镜像 2.4 docker rmi 删除镜像 2.5 docker build 构建镜像 3 容器命令 3.1 如拉取一个centos镜像 3.2 运行…

SpringMVC的常用注解,参数传递以及页面跳转的使用

目录 slf4j 常用注解 RequestMapping RequestParam RequestBody PathVariable 参数传递 首先在pom.xml配置文件中导入SLF4J的依赖 基础类型String 复杂类型 RequestParam PathVariable RequestBody 增删改查 返回值 void返回值 String返回值 modelString …

51单片机的简易篮球计分器倒计时仿真设计( proteus仿真+程序+原理图+报告+讲解视频)

51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频&#xff09; 1.主要功能&#xff1a;2.仿真3. 程序代码4. 原理图5. 设计报告6. 设计资料内容清单&&下载链接 51单片机的简易篮球计分器倒计时仿真设计( proteus仿真程序原理图报告讲解视频…

List常见面试问题

List的特点有哪些&#xff1f; Java中的List是一种存放有序的、可以重复的数据的集合&#xff0c;它允许重复元素的存在。List中的元素都有对应的一个序列号(索引)记录着元素的位置&#xff0c;因此可以通过这个序列号来访问元素。 ‍ Java中集合有哪些&#xff1f; Java中…

最新仿闲鱼链接+独立后台管理 跳转APP

2024最新仿xy链接源码 后台一键生成链接&#xff0c;后台管理教程&#xff1a;解压源码&#xff0c;修改数据库config/Congig 不会可以看源码里有教程 下载程序&#xff1a;https://pan.baidu.com/s/16lN3gvRIZm7pqhvVMYYecQ?pwd6zw3

【C进阶】分析 C/C++程序的内存开辟与柔性数组(内有干货)

前言&#xff1a; 本文是对于动态内存管理知识后续的补充&#xff0c;以及加深对其的理解。对于动态内存管理涉及的大部分知识在这篇文章中 ---- 【C进阶】 动态内存管理_Dream_Chaser&#xff5e;的博客-CSDN博客 本文涉及的知识内容主要在两方面&#xff1a; 简单解析C/C程序…

CSS中如何实现一个自适应正方形(宽高相等)的元素?

聚沙成塔每天进步一点点 ⭐ 专栏简介⭐利用padding百分比⭐2. 利用::before伪元素⭐ 写在最后 ⭐ 专栏简介 前端入门之旅&#xff1a;探索Web开发的奇妙世界 记得点击上方或者右侧链接订阅本专栏哦 几何带你启航前端之旅 欢迎来到前端入门之旅&#xff01;这个专栏是为那些对W…

【面试心得】系统调用

这个问题也是在九识面试的时候被问到的&#xff0c;当时我说就是像Shell&#xff0c;从用户态转移到内核态的过程&#xff0c;面试官让我说的详细一点&#xff0c;我就说不出来了&#xff0c;然后我就说了一些函数调用的过程&#xff0c;hhhh。 现在在这里做一个记录吧。 本文…

车载诊断数据库——诊断问卷调查表与CDD关联关系

车载诊断数据库——诊断问卷调查表与CDD关联关系 我是穿拖鞋的汉子,魔都中坚持长期主义的汽车电子工程师。 老规矩,分享一段喜欢的文字,避免自己成为高知识低文化的工程师: 没有人关注你。也无需有人关注你。你必须承认自己的价值,你不能站在他人的角度来反对自己。人生…

typeScript 学习笔记(二)

类接口 TypeScript 入门教程 (xcatliu.com) 十四.类 ① 类 类&#xff1a;定义了一件事物的抽象特点&#xff0c;包含它的属性和方法对象&#xff1a;类的实例&#xff0c;通过new生成面向对象&#xff08;OOP&#xff09;的三大特性&#xff1a;封装、继承、多态封装&…

LAMP搭建WordPress

L linux A apache hhtpd M mysql/maridb P PHP1、 安装php yum -y install php php-fpm php-server php-mysql1.1、 启动php-fpm并自启 systemctl enable php-fpm --now[rootecs-1cee ~]# systemctl status php-fpm ● php-fpm.service - The PHP FastCGI Process ManagerLoa…

muduo 32 muduo项目总结

Timestamp时间管理类 ①&#xff1a;主要提供now函数显示当前时间&#xff1a;自1970年1月1日0点以来经过的秒数&#xff0c;使用time函数 ②&#xff1a; toString函数将字符串转化成时间字符串&#xff0c;使用localtime函数将秒数格式化成日历时间 解析tm_time 并以日历格…

计算机毕业设计 JSPM校园闲置物品交易平台的设计与实现 Java实战项目 附源码+文档+视频讲解

博主介绍&#xff1a;✌从事软件开发10年之余&#xff0c;专注于Java技术领域、Python人工智能及数据挖掘、小程序项目开发和Android项目开发等。CSDN、掘金、华为云、InfoQ、阿里云等平台优质作者✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精…

【C++模拟实现】手撕AVL树

【C模拟实现】手撕AVL树 目录 【C模拟实现】手撕AVL树AVL树的介绍&#xff08;百度百科&#xff09;AVL树insert函数的实现代码验证是否为AVL树AVL树模拟实现的要点易忘点AVL树的旋转思路 作者&#xff1a;爱写代码的刚子 时间&#xff1a;2023.9.10 前言&#xff1a;本篇博客将…

Nodejs 第十五章(child_process)

child_process 子进程 子进程是Nodejs核心API&#xff0c;如果你会shell命令&#xff0c;他会有非常大的帮助&#xff0c;或者你喜欢编写前端工程化工具之类的&#xff0c;他也有很大的用处&#xff0c;以及处理CPU密集型应用。 创建子进程 Nodejs创建子进程共有7个API Sync…

跟踪源码技巧+阅读源码工具Sourcetrail

基于Eclipse IDE 1、Quick Type Hierarchy 快速查看类继承体系 &#xff08; 快捷键&#xff1a;Ctrl T&#xff09; 查看类很多人可能都知道&#xff0c;可源码阅读的时候更多用来查看方法体系更重要&#xff0c;可以方便快速的定位到方法的实现类。如&#xff1a; 此时如…

Kafka入门与安装

为什么要用消息中间件&#xff1f; 异步处理 场景说明&#xff1a;用户注册后&#xff0c;需要发注册邮件和注册短信。传统的做法有两种1.串行的方式&#xff1b;2.并行方式。 串行方式&#xff1a;将注册信息写入数据库成功后&#xff0c;发送注册邮件&#xff0c;再发送注…

无涯教程-JavaScript - COUPDAYSNC函数

描述 COUPDAYSNC函数返回从结算日期到下一个息票日期的天数。 语法 COUPDAYSNC (settlement, maturity, frequency, [basis])争论 Argument描述Required/OptionalSettlement 证券的结算日期。 证券结算日期是指在发行日期之后将证券交易给买方的日期。 RequiredMaturity 证…