模块与包,文件操作

Python模块包与文件操作 本文系统介绍了Python模块化编程与文件操作的核心知识点。主要内容包括:1. 模块与包的概念:模块是.py文件,包是包含__init__.py的文件夹,支持分层组织代码;2. 文件操作:使用open()函数配合with语句安全读写文件,详解r/w/a等模式差异;3. 异常处理:try-except机制捕获处理异常,finally确保资源释放,raise主动抛出异常;4. 最佳实践:推荐模块化组织代码、with管理文件资源、具体捕获异常类型。文章通过生动类比(如模块比作乐高积木)和丰富示例(学生管理系统、单 阅读详情

*****装饰器下****

***inspect模块***

<inspect.getcallargs返回一个字典, key值为:形参, value值为对应的实参>

import functools
import inspect

def is_admin(fun):  # fun=add_student
    @functools.wraps(fun)
    def wrapper(*args, **kwargs): # kwargs = {'name':'root'}
        inspect_res = inspect.getcallargs(fun, *args, **kwargs)
        print("inspect的返回值: %s" %(inspect_res))

        if inspect_res.get('name') == 'root':
            temp = fun(*args, **kwargs)
            return temp
        else:
            print("not root/admin user, no permisson add student")   # 抛出异常
    return wrapper


@is_admin   # add_student = is_admin(add_student)
def add_student(name):   #
    print("添加学生信息.....")
add_student('redhat')


***多个装饰器***

<装饰规则:从下至上调用,从上至下装饰>

def decorator_a(func):
    print('Get in decorator_a')
    def inner_a(*args, **kwargs):
        print('Get in inner_a')
        return func(*args, **kwargs)
    return inner_a

def decorator_b(func):
    print('Get in decorator_b')
    def inner_b(*args, **kwargs):
        print('Get in inner_b')
        return func(*args, **kwargs)
    return inner_b



# 当有多个装饰器时, 从下到上调用装饰器;
@decorator_b   #  f =  decorator_b(inner_a)   # f = inner_b
@decorator_a   # f = decorator_a(f)    # f = inner_a
def f(x):
    print('Get in f')
    return x * 2

f(1)


***带参数的装饰器***

import functools
import time
import random
def addLog(type):   # type='warn'
    # type="warn"    Warn
    # type.title()
    def add_log(f):
        @functools.wraps(f)
        def wrapper(*args, **kwargs):
            start_time = time.time()
            res = f(*args, **kwargs)
            end_time = time.time()
            print("日志信息:[%s] [%s] %s 运行时间为%.5f s 运行结果为%s" %(
                type.title(),time.ctime(),f.__name__,end_time-start_time,res))
            return res
        return wrapper
    return add_log


@addLog("warn")   # hello = addLog(warn')
                        #  hello = add_log(hello)
                        # hello ======= wrapper()
def hello():
    time.sleep(random.random())
    return "hello"
@addLog(type="debug")
def add(x,y):
    time.sleep(random.random())
    return x+y

print(hello())
print(add(1,2))



****模块与包****



 ***模块分类***


    # - 内置模块 : random,sys,time,collections, functools, inspect

    # - 自定义模块: 自己写的模块;

    # - 第三方模块: pypi.python.org; itchat,qrcode


***写模块***

import sys
def test():
args = sys.argv
if len(args) == 1:
print 'Hello world'
elif len(args) == 2:
print 'Hello %s!' %args[1]
else:
print 'Too many arguments!'
if __name__ == '__main__':
test()

***模块调用***

> 当我们调用一个模块时,Python 会在指定的路径下搜索对应
的.py 文件;
> 默认情况下,Python 解释器会搜索当前目录、所有已安装的内置模

块和第三方模块,搜索路径存放在 sys 模块的 path 变量中;

>> 添加路径到默认搜索路径中;

# sys.path.append('xxx')

# sys.path.insert(0,'xxx')


***包***


包的创建:

创建一目录为包名;
在该文件夹下创建__init__.py文件存放包的信息,该文件
可以为空;
根据需要存放脚本文件,已编译的扩展及子包;
可以用import,import as,from import等语句导入模块

和包;


****文件操作****


***打开文件***

>>f=open('file')     默认已读的方式打开   结束要以f.close() 关闭文件

>>with语句  结束文件操作自行关闭

打开模式:

>>'r'   *只读 不可写  *不可创建新文件 *指针默认在开始

>>'r+'  *可读可写  *打开时不会清空文件内容  *不可创建新文件  *指针默认在开始

>>'w'  *只写 不可读  *打开时清空文件内容  *可以创建新文件  *指针默认在开始

>>'w+'  *可读可写  *打开时清空文件内容  *可以创建新文件  *指针默认在开始

>>'a'  *只写不可读  *打开时不会清空文件内容  *可以创建新文件  *指针默认在结尾

>>'a+'  *可读可读  *打开时不会清空文件内容  *可以创建新文件  *指针默认在结尾


***文件的读写***


读:#f.read() 读取文件所有内容  <加参数时读取相应字节>

#f.readline() 读取一行内容  <加参数时读取相应行内容>

#f.readlines() 读取文件所有内容 ,返回一个列表

#for 循环遍历

f = open("/root/Desktop/xxx")
print(f.read())
f.seek(0,0)
print('=============')
print(f.readline())
print(f.readline())
print(f.readline())
f.seek(0,0)
print('=============')
print(f.readlines())


写:#f.write() 写入内容

#f.writelines() 写入多个内容

f = open("/root/Desktop/xxx", 'a+')
li = ['user1', 'user2', 'user3']
f.write("hello")
f.writelines(['gcc\n', 'c++\n'])
f.writelines([line+"\n" for line in  li])
f.seek(0,0)
print(f.read())
f.close()



注:读文件和写文件都会使指针移动

#f.seek(x,x)移动指针

#f.tell()指针位置



***os模块文件名的操作***


import os



print(os.getcwd())#显示当前路径





print(os.path.splitext('hello.py'))#分离文件名和后缀
print(os.path.split('/home/aa/hello.py'))#分离路径和文件名

print(os.listdir('/var/log'))#显示该目录下所有内容


os.mknod('/tmp/westos')#创建文件

os.remove('/tmp/westos')#删除文件

os.mkdir('/tmp/westosdir')#创建目录


os.makedirs('/tmp/ok/westosdir')#创建多重目录


os.removedirs('/tmp/ok/westosdir')#删除目录



print(os.path.isfile("/etc/passwd"))#判断对象是否为文件
print(os.path.isabs("~/passwd"))#判断对象是否为绝对路径


print(os.path.exists('/etc/passwds'))#判断对象是否存在
print(os.path.exists('/mnt'))





print(os.path.sep)   #linex:/   windows:\



print(os.path.basename('/hello/hello.py'))#提取文件名

print(os.path.dirname('/hello/hello.py'))#提取目录




os.rename('/tmp/passwdok', '/mnt/passwdok')#重命名


文件操作练习:

# 题目:

# 创建文件/mnt/hello{1..8}.jpg   /mnt/westos{a..d}.py

# 修改所有的.jpg结尾的文件为/mnt/hello{1..8}.png;


#创建文件
import os
def creatfile(dirname):
    filea = ['hello' + str(i) + '.jpg' for i in range(1, 9)]
    fileb = ['westos' + str(i) + '.py' for i in range(1, 9)]
    for file in filea+fileb:
        filename=dirname+file
        if not os.path.exists(filename):
            os.mknod(filename)
            print('%s文件创建成功'%filename)
        else:
            print('%s文件创建失败'%filename)


#修改文件名

creatfile('/root/Desktop/')



def mod_filename(dirname,oldsuffix,newsuffix):
    if '.' not in oldsuffix:
        oldsuffix='.'+oldsuffix
    if '.' not in newsuffix:
        newsuffix='.'+newsuffix
    if os.path.exists(dirname):
        olddict=[filename for filename  in os.listdir(dirname) if filename.endswith(oldsuffix)]
        basename=[os.path.splitext(filename)[0] for filename in olddict]
        for filename in basename:
            dirname=os.path.abspath(dirname)+os.path.sep#找绝对路径
            old_name=dirname+filename+oldsuffix
            new_name=dirname+filename+newsuffix
            os.rename(old_name,new_name)
            print('%s重命名%s成功'%(old_name,new_name))

    else:
        print('%s目录不存在'%dirname)


mod_filename('/root/Desktop/','.py','.c')
print (os.listdir('/root/Desktop/'))


*********THE END*********

5分钟搞定PaddleOCR PP-OCRv5环境搭建:从安装到第一个识别Demo 本文提供了一份详细的PaddleOCR PP-OCRv5环境搭建与快速入门指南。通过清晰的步骤,指导读者在5分钟内完成从创建Python虚拟环境、安装PaddlePaddle框架和PaddleOCR库,到编写并运行第一个OCR识别Demo的全过程,帮助开发者快速体验最新的PP-OCRv5模型的文字识别能力。 阅读详情

相关推荐

Xftp卸载报错1628终极解决指南:深入解析InstallShield残留问题

本文深入解析了Xftp卸载时遇到的1628错误,其根源在于InstallShield安装引擎的残留问题。文章提供了从手动清理注册表项到彻底删除隐藏安装备份文件夹的完整解决方案,并给出了防患于未然的实用建议,帮助用户彻底解决这一经典安装报错。

weixin_29276847的博客 336

Python中的文件操作与模块详解

本文介绍了open函数、json与pickle模块以及os模块

2302_78656999的博客 2163

(一)Tushare Pro教程:股票基本数据接口

 一直使用tushare作数据源,这里开个教程大家一起学习。 一、介绍        tushare是一个python股票数据源,现已升级到tushare pro版本,新版本在数据稳定性和获取速率上大幅提升。与wind、东财等收费数据源相比,tushare pro算是金融数据界的良心之作,其为从事金融工程、量化研究等方向的同学们提供了便利。tushare pro还有一点突出的特色就是已经将股票...

虎毛的博客 4万+

Python——模块、文件操作

Python笔记(模块、文件操作) 一、模块 1.模块 Python中的模块是一个包含事先定义好的函数和变量的文件,其后缀名是.py。 模块可以被别的程序引入,已使用该模块中的函数等功能。 内部可包含定义好的函数、变量、类、数据、执行的功能。 模块有内置模块、自定义模块、第三方模块。 “.pyc” 经过编译后的Python文件,加快模块的执行速度。 2.使用模块 调用模块可以简化开发、减少代码量。 想使用Python源文件,只需在另一个源文件里执行import语句,语法如下: #import 模块名 imp

AQingSui的博客 282

算力网:正在编织的“第二电网“

中国算力网:编织智能时代的"第二电网" 中国正在构建全国一体化算力网,目标让算力资源像水电一样即取即用。这一国家战略通过"东数西算"布局,将东部算力需求与西部清洁能源优势结合,形成三级时延圈(1ms城市级、5ms区域级、20ms国家级)。算力网采用三层架构:基础设施层的八大枢纽节点作为"发电厂",编排管理层的智能调度系统作为"调度中心",运营服务层提供标准化算力服务。关键技术包括算力路由、异构算力统一度量、无损网络和液冷技术等。

这只是一个博客 668

Windows应急响应实战:灰鸽子木马检测与清除全流程解析

远程控制木马(RAT)是一种基于客户端/服务器(C/S)架构的恶意软件,攻击者通过它能够远程操控受害主机,实现屏幕监控、文件窃取、键盘记录等操作,对个人隐私与企业数据安全构成严重威胁。其技术原理通常涉及进程注入、网络通信、持久化机制等核心环节,在应急响应中具有极高的分析价值。掌握此类木马的检测与清除方法,是Windows系统安全防护与事件处置的基本功。本文以经典的灰鸽子木马为例,结合进程分析、网络排查、注册表检查等实战技术,系统讲解从行为识别、痕迹取证到彻底清除的完整操作流程,并涵盖Rootkit对抗、无文

weixin_30521161的博客 415

python模块与文件操作_超详细的Python文件操作知识

来源:南枝向暖北枝寒MAhttps://blog.youkuaiyun.com/mall_lucy/article/details/104547365【导语】:python进行文件操作,在日常编程中是很常用的。为了方便大家,这里对各种文件操作的知识进行汇总。一文在手,无须它求!来一起学习吧。--- 以下是正文 ---本文分七个模块为大家详细介绍python中文件操纵相关知识,闲话少说,让我们开始!一、文件的打...

weixin_31976851的博客 276

VL53L0X测距不准?手把手教你做RefSPAD校准与环境补偿(附Arduino/STM32代码)

本文详细解析了VL53L0X激光测距传感器精度不足的原因,并提供了RefSPAD校准与环境补偿的完整解决方案。通过Arduino和STM32代码示例,手把手教你实现毫米级测距稳定性,适用于机器人避障、工业检测等场景。

weixin_28744423的博客 257

Python的文件操作,模块以及包

一.模块 一个.py文件就称为一个模块,模块有内置的,也有自定义的模块 提高了代码的可维护性,一个模块编写完毕,就可以被引用 1.python模块的搜索路径 (1)模块和编写的程序在同一目录 下面是add.py模块 (2)模块和编写的程序在不同目录 sys.path    ##python模块的默认搜索路径 import sys     ##导入

ZZL95415的博客 1955

【抖音】a_bogus参数逆向分析

点击——展开xxx条回复﹀就会出现。可以看到这个栈是有请求相关的数据的。所以就是在bdms.js里面生成的。

qq_44990881的博客 3000

一文弄懂Word2Vec之skip-gram(含详细代码)

目录 前言 一、什么是Skip-gram算法 二、目标是什么 三、定义表示法 3.1 one-hot向量 3.2 词向量(word vector) 3.3 单词矩阵 3.4 单词相似度 3.5 softmax函数 3.6算法过程 3.7 求softmax 四、skipgram代码实现 4.1 如何把词转换为向量 4.2 CBOW和Skip-gram的算法实现 Skip-gram的理想实现 Skip-gram的实际实现 4.3 使用Pytorch实现Skip-gram .

Python,数据分析,机器学习,深度学习 1万+

Python学习日志——文件操作与os模块基本操作

1. 文件操作 常见文件类型 txt csv json html mp4 文件操作的流程 打开–>open() 读写–>read()/write() 关闭–>close() 序号 用途 方法 功能 1 打开/关闭 f=open(file) 打开文件 2 close() 关闭文件 3 读写文件内容 f.read([size]) 从文件中读取...

qq_38525063的博客 302

SAP S/4HANA Public Cloud 配置全景实践

本文提供SAP S/4HANA Public Cloud配置的实用指南,重点介绍三大核心工具:CBC(范围界定与配置)、SAP Activate(方法论与路线图)和Cloud ALM(项目执行与运维)。文章详解了不同系统架构(2SL/3SL)的配置路径,并以制造企业案例说明端到端实施流程。同时提供了工具协同操作方法、初始访问安全建议和常见问题的专家意见,帮助项目团队高效完成实施工作。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 561

11.文件操作与模块,包的命名

一.文件操作 1.打开文件 2.读取文件 3.写入文件 4.关闭文件 5.文件和目录操作 6.文件路径操作 二.模块与包的命名 1.定义 2.跨文件导入模块 3.导入包内模块的单个功能 4.模块分为 5.模块的指令

恸流失的博客 1013

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Python文件操作+Python异常模块与包

1.3、文件的写入 二、Python异常、模块与包 2.1 了解异常

Pig-pig-pig的博客 558

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

python基础知识总结(第五篇):文件操作、异常、模块与包

python基础知识汇总

2301_76144723的博客 1188

## Python 基础语法与数据类型(十) - 模块、包与文件操作

本文介绍了Python中模块和包的概念及其使用方法。主要内容包括:1)模块的导入方式(import、from...import...、import...as等);2)Python模块的搜索路径;3)常用标准库模块(如math、random、datetime等);4)包的组织结构及其创建方式(通过__init__.py文件)。这些机制可以帮助开发者更好地组织和重用代码,提高程序的可维护性。文章还详细演示了各种导入方式的语法和使用场景,并强调了避免使用from...import*的原因。

晨的技术博客 892

Python 模块与包的导入技巧及 JSON 文件操作实战

本文介绍了Python模块与包的导入规则及JSON数据处理应用。主要内容包括:1)模块与包的基本概念,区分绝对导入(跨包调用)和相对导入(包内部引用);2)通过实例演示json模块实现列表数据的持久化管理,包含添加、读取功能;3)关键知识点解析,如json.dump/load方法、文件路径处理和with语句;4)使用建议,包括优先指定导入元素、编写文档字符串及处理跨平台路径问题。文章强调合理组织模块结构和正确导入方式对提升代码可维护性的重要性。

qwerty12ljhxjdj的博客 804

python文件操作与异常处理_Python之设计模式、异常处理、模块与包、文件操作及编码...

版权声明:本文为博主原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。单例设计模式设计模式:前人工作的总结与提炼,针对某一特定问题的比较成熟的解决方案,使用设计模式可提高代码复用率、可读性,可靠性;单例设计模式:目的是让类所创建的对象在系统中只有唯一一个实例,让每一次执行类名()所返回的对象的内存地址都是同一个的;__new__()方法 作用:在内存中给对象分配空间,...

weixin_39664994的博客 88

python基础Ⅳ(文件操作、模块和包导入、os模块、自定义模块发布与安装、sys模块、time模块、datetime模块、random模块、hashlib模块)

一、文件操作 打开文件 用于打开一个文件,创建并返回一个 file 对象 open(name[, mode[, buffering]]) name : 文件名称的字符串值。 mode : 打开文件的模式:只读,写入,追加等。这个参数是非强制的,默认文件访问模式为只读。 buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如

胡图图不糊涂的博客 473

(5) 模块与包、编码格式、文件操作、目录操作

模块与包编辑 模块自定义模块以主程序形式运行包编码格式文件操作 文件的读写原理文件的读写操作常用的文件打开模式 文件对象的常用方法with语句(上下文管理器)目录操作模块英文为Modules在Python中一个扩展名为,py的文件就是一个模块 函数与模块的关系:一个模块中可以包含N多个函数使用模块的好处 1.代码规范2.避免模块名称冲包与目录的区 1.包含_init_,py文件的目录称为包2.目录里通常不包含.init_.py文件包with语句可以自动管理上下文资源,不论什么原因跳出with块,都能确保文

m0_62063669的博客 346

深入理解Python:基本数据类型、控制流、函数、模块与包、文件操作及异常处理

总结:本文详细介绍了Python编程语言的核心概念,包括基本数据类型、控制流语句、函数、模块与包、文件操作以及异常处理。本文旨在为读者提供关于Python编程语言的核心概念的专业介绍,涵盖基本数据类型、控制流语句、函数定义与调用、模块与包的使用、文件操作以及异常处理。list(列表):用于存储有序的元素集合,元素可以是不同类型。模块:是包含Python定义和声明的文件,扩展名为.py。for循环:遍历序列中的每个元素,执行代码块。函数是组织代码的一种方式,用于封装可重用的代码块。

sdsdsdd__的博客 704

Python语法(3)-文件操作,异常模块与包

modeencodingmode常用的三种基础访问模式。

一个人的江湖 316

Python 之设计模式、异常处理、模块与包、文件操作及编码

单例设计模式 设计模式:前人工作的总结与提炼,针对某一特定问题的比较成熟的解决方案,使用设计模式可提高代码复用率、可读性,可靠性; 单例设计模式:目的是让类所创建的对象在系统中只有唯一一个实例,让每一次执行类名()所返回的对象的内存地址都是同一个的; __new__()方法 作用:在内存中给对象分配空间,返回对象的引用; 重写时一定要return super().__new__(cls); ...

村雨遥 553

小白入门python---day3_Python文件操作,Python的包与模块

文件操作 读取文件 open('filename','mode','encoding') #(文件名,打开格式,打开编码格式) #python3.0以后版本只有open这个操作文件函数. 打开与关闭文件 包与模块 包 模块 模块导入 模块关键字 python内置模块 ...

Sam Zhu 392

day07_Python的异常捕获、文件操作、模块与包

当程序产生异常的时候,程序会在异常发生的位置中断,导致后续的代码都无法运行。然而,在实际的开发过程中,我们往往会需要兼容很多潜在的异常。比方说,假如我们开发的程序希望用户输入一个数字,但是用户输入了一个特殊符号,我们应该抛出这个问题给用户,然后程序继续正常运行,而不是直接杀死整个程序。因此,Python提供了捕获并处理异常的方法。

YUDAMENGNIUBI的博客 195

Python学习记录Day 4---1.17 Python文件操作、Python异常、模块与包

python学习第四天

weixin_44750135的博客 137
上一篇: 文件操作练习
下一篇: 停车管理系统
wl_python
博客等级 码龄9年 21粉丝 28原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值