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

news2024/10/7 14:29:32

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

《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') ---一定要rb

f = 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/list


src_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'')为假,取反为真
        break
    else:
        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'')为假,取反为真
            break
        else:
            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 string
    import random
    result = ''
    for i in range(1,n+1):
        #ms = str(random.choice(range(0,10)))
        inn = random.choice(range(0,94))

        all_str = string.printable

        result +=  all_str[inn]
    return result

if __name__ == '__main__':
    print(mk_pass())
    print(mk_pass(4))
    print(mk_pass(10))

方法二:

from random import choice
import string

all_str = string.printable

def mk_pass2(n=8):
    result = ''
    for i in range(n):
        ch = choice(all_str)
        result += ch
    return result

if __name__ == '__main__':
    print(mk_pass2())
    print(mk_pass2(4))
    print(mk_pass2(10))

 

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

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

相关文章

【人月神话】重新探索人月神话:软件工程的现实与挑战

人月神话是一篇由美国软件工程师弗雷德里克布鲁克斯所写的软件工程经典之作&#xff0c;最早发表于1975年。这篇文章的全名是《人月神话&#xff1a;软件工程的神话与现实》&#xff08;The Mythical Man-Month: Essays on Software Engineering&#xff09;&#xff0c;它涵盖…

智慧导览|智能导游系统|AR景区导览系统|景区电子导览

随着文旅市场的加快复苏&#xff0c;以及元宇宙、VR、AR、虚拟数字人等新兴技术的快速发展&#xff0c;文旅行业也正在加快数字化转型的步伐&#xff0c;向智慧景区建设迈进。为满足不同年龄段游客的游览需要&#xff0c;提升旅游服务体验&#xff0c;越来越多的旅游景区、博物…

BlueStore BlueFS rocksdb 关联性梳理

Tag: ceph 12.2.4 BlueStore空间初始化 BlueStore磁盘空间管理 总述 OSD挂载目录基于文件系统管理&#xff0c;Slow、WAL、DB空间区域基于裸盘管理&#xff1b;Slow区域&#xff1a;此类空间主要用于存储对象数据&#xff0c;由BlueStore管理&#xff0c;其中分配于BlueFS空…

如何将枯燥的大数据进行可视化处理?

在数字时代&#xff0c;大数据已经成为商业、科学、政府和日常生活中不可或缺的一部分。然而&#xff0c;大数据本身往往是枯燥的、难以理解的数字和文字&#xff0c;如果没有有效的方式将其可视化&#xff0c;就会错失其中的宝贵信息。以下是一些方法&#xff0c;可以将枯燥的…

Python入门 类class 基础篇

记住一句话&#xff1a;类是模板&#xff0c;而实例则是根据类创建的对象。 我初学时对类的理解是从类的字面上&#xff0c;可以片面的认为它是一个种类&#xff0c;它是相似特征的抽像&#xff0c;也就是相似的东西&#xff0c;可以把相似特征的事务抽象成一个类。&#xff0…

基于串口校时的数字钟设计

文章目录 设计目标硬件设计数码管串口 软件设计顶层模块串口接收模块数据处理模块时钟模块串口发送模块 总结 设计目标 环境&#xff1a;ACX720开发板 实现功能&#xff1a; 数码管能够显示时分秒能够接收串口数据修改时间能够将当前时间以1s一次速率发送到电脑 硬件设计 数…

java之SpringBoot基础篇、前后端项目、MyBatisPlus、MySQL、vue、elementUi

文章目录 前言JC-1.快速上手SpringBootJC-1-1.SpringBoot入门程序制作&#xff08;一&#xff09;JC-1-2.SpringBoot入门程序制作&#xff08;二&#xff09;JC-1-3.SpringBoot入门程序制作&#xff08;三&#xff09;JC-1-4.SpringBoot入门程序制作&#xff08;四&#xff09;…

virtualbox 扩展磁盘大小

此处设置完成后&#xff0c;还需要进入虚拟机&#xff0c;实际扩展磁盘大小 参考 https://zhuanlan.zhihu.com/p/319431032

搭一个shinyAPP就是一篇《Bioinformatics》?

写在前面 原本想引用一番shiny&#xff0c;结果并没有检索出shiny研发团队所发表的论文&#xff0c;倒是有诸多shiny爱好者搭建shinyApp所发表的文章。例如这篇题为“ShinyGO: a graphical gene-set enrichment tool for animals and plants”、于2020年发表于《Bioinformatic…

【AWS】如何用SSH连接aws上的EC2实例(虚拟机)?

目录 0.环境 1.连接结果示例 2.SSH连接思路 3.具体步骤 1&#xff09;安装并运行ssh服务 2&#xff09;启动ssh服务 3&#xff09;在AWS上找到正在运行的EC2实例&#xff0c;并且根据提供的ssh连接语句进行连接 0.环境 windows 11 64位 前提&#xff1a; 有aws账户&…

B. Swap and Reverse

Problem - B - Codeforces 思路&#xff1a;这个题想复杂了&#xff0c;对于第一个条件&#xff0c;我们发现其实就是可以对所有的奇数位置之间任意交换&#xff0c;所有的偶数位置之间任意交换&#xff0c;对于第二个条件来说&#xff0c;如果k为奇数是没有意义的&#xff0c;…

2022年12月 C/C++(七级)真题解析#中国电子学会#全国青少年软件编程等级考试

C/C编程&#xff08;1~8级&#xff09;全部真题・点这里 第1题&#xff1a;走迷宫 一个迷宫由R行C列格子组成&#xff0c;有的格子里有障碍物&#xff0c;不能走&#xff1b;有的格子是空地&#xff0c;可以走。 给定一个迷宫&#xff0c;求从左上角走到右下角最少需要走多少步…

跑得快的快递和跑得慢的快递差在哪些环节?

快递速度是现代物流的核心竞争力之一&#xff0c;对于电商行业和消费者而言&#xff0c;快捷、高效的快递服务意味着更好的购物体验和更高的客户满意度。大家都有过这样的经历&#xff1a;有时候我们选择了跑得快的快递公司&#xff0c;包裹几乎可以说是眨眼间就到达了目的地&a…

​SIGIR 2023 | 用于序列推荐的多兴趣预训练框架

©PaperWeekly 原创 作者 | 唐作立 单位 | 武汉大学硕士生 研究方向 | 推荐系统 引言 在推荐系统中&#xff0c;由于用户具备多种兴趣的特点&#xff0c;使用多兴趣学习&#xff08;Multi-interest Learning&#xff09;对用户进行建模能够带来显著的性能提升&#xff0c;…

【2023集创赛】加速科技杯二等奖作品:基于ATE的电源芯片测试设计与性能分析

本文为2023年第七届全国大学生集成电路创新创业大赛&#xff08;“集创赛”&#xff09;加速科技杯二等奖作品分享&#xff0c;参加极术社区的【有奖征集】分享你的2023集创赛作品&#xff0c;秀出作品风采&#xff0c;分享2023集创赛作品扩大影响力&#xff0c;更有丰富电子礼…

自然语言处理 微调大模型ChatGLM-6B

自然语言处理 微调大模型ChatGLM-6B 1、GLM设计原理2、大模型微调原理1、P-tuning v2方案2、LORA方案 1、GLM设计原理 bert的主要任务是随机的去除掉某个单词&#xff0c;使用上下文将其预测出来&#xff08;相当于完形填空任务&#xff09;&#xff1b; GPT的主要任务是根据前…

idea配置gitLab

前言&#xff1a;网上有很多类似的文章&#xff0c;但描述不够详细 步骤1&#xff1a;安装git 如果安装成功再次点击TEST按钮展示如下&#xff1a;git版本 步骤2&#xff1a;idea配置gitlab 查看当前项目管理的 远程仓库再git的地址&#xff0c;该地址可是gitLab的&#xff0…

基于sonar 的C#静态代码扫描使用总结

1.原理简介 C#语言接入Sonar代码静态扫描相较于Java、Python来说&#xff0c;相对麻烦一些。Sonar检测C#代码时需要预先编译&#xff0c;而且C#代码必须用MSbuid进行编译&#xff0c;如果需要使用SonarQube对C#进行代码质量分析&#xff0c;则需要Sonar-Scanner-MSBuild和MSBu…

WorldCoin 运营数据,业务安全分析

WorldCoin 运营数据&#xff0c;业务安全分析 Worldcoin 的白皮书中声明&#xff0c;Worldcoin 旨在构建一个连接全球人类的新型数字经济系统&#xff0c;由 OpenAI 创始人 Sam Altman 于 2020 年发起。通过区块链技术在 Web3 世界中实现更加公平、开放和包容的经济体系&#…

PHP 影院售票管理系统Dreamweaver开发mysql数据库web结构php编程计算机网页代码

一、源码特点 PHP 影院售票管理系统是一套完善的web设计系统&#xff0c;对理解php编程开发语言有帮助&#xff0c;系统具有完整的源代码和数据库&#xff0c;系统主要采用B/S模式开发。 https://download.csdn.net/download/qq_41221322/88297676 PHP 影院售票管理系统Dr…