2020-12-01

一.模块简介

        概念:在pythn中一个PY文件就是一个模块

        引入: 1.import 模块名      2.import 模块名 as 新命名

            [注意] :  引用n次模块,但是模块只能被调用一次

主文件:

import test_m 

这是我的第一个模块        //运行结果

test_m.py文件

print("这是我的第一个模块")

模块的是使用:

    访问变量:模块名.变量名

    访问函数:模块名.函数名

    访问类:模块名.类名

-->模块文件test_m.py

a =10

b =20         # 变量

def f1():         # 函数

    print("hello")         

class Person():         # 类

        def __init__(self,name):

                self._name = name

        def speak(self):

                print("大家好,我是小黑!")

p1 = Person("小黑")

主文件:

import test_m   //[注意]:这种导入方法模块文件里面的变量函数都能够被访问

print(test_m.a)    # 10

print(test_m.f1())  #hello

print(test_m.p1._name)  #小黑

print(test_m.p1.speak())    #大家好,我是小黑!

有时候只需要访问其中的一部分内容   

from XXX(模块名)  import  变量/函数名

from XXX(模块名)  import  *

**__name__ : 可以获取当前模块的名字,如果当前文件(运行的文件)是主文件,它的名字是__main__

二.文件操作

文件(file) 通过Python程序来对计算机中的各种文件进行增删改查的操作 文件也叫I/O(Input/Output)

-->打开   open()

-->在同一目录下打开文件

# 创建变量保存文件的名字

file_name ="abc.txt"

a =open(file_name)

# open函数有返回值,即当前对象

print(a)

# <_io.TextIOWrapper name='abc.txt' mode='r' encoding='cp936'>

-->在不同目录下打开文件

 file2_name = 'xiaohei.txt'

file2_name =r"C:\Users\User\Desktop\xiaohei.txt" #路径中不要出现中文

open(file2_name)

-->读取    read()

open代开的文件类型有两种

    1.纯文本(使用UTF-8编写的),open()函数默认打开文件形式

    2.二进制文件(图片,音频,视频)

f_name ='cts.txt'

try:

with open(f_name,encoding='utf-8')as f_obj:

cont = f_obj.read()

print(cont)

except FileNotFoundError:

print(f'{f_name}不存在')

# UnicodeDecodeError: 'gbk' codec can't decode byte 0xb6 in position 14: illegal multibyte sequence,没有指定编码格式utf-8的情况下

# 九月九日时

# 黎元减圣忧

# 追我复追君

# 夕夕都成玦

 read()是把 文件中的内容全部读取,所以如果文件较大,不要直接使用read()

 可以位read()函数里的size属性赋值,读取指定数量的字符,size = -1(默认值,读取全部内容)

 如果字符数小于size的值,还是会全部读取

 示例如下:

try:

with open(f_name,encoding='utf-8')as f_obj:

chunk =6 #指定四则大小

        while True:

content = f_obj.read(chunk)

print(content)

if not content:

break

except FileNotFoundError:

print(f'{f_name}不存在')

# 其它读取大文件的方式

with open(f_name,encoding='utf-8')as f_obj:

# readline()读一行内容

    print(f_obj.readline(),end='')

# 九月九日时

-->写入    write()

f_name ='cts.txt'

with open(f_name,'w',encoding='utf-8')as f_obj:

f_obj.write('九月初九日,黎首见帝业,追随探灵怪,夕殿下珠帘')

# io.UnsupportedOperation: not writable

# 使用open()函数不指定操作类型,那么文件是只读模式,不能向文件中写入内容

# r 表示只读(默认)  w 表示写入(不要写入纯数字)

# 如果文件中没有内容就写入内容,否则会覆盖原内容,返回值是写入的字符个数

-->关闭    close()

file_name ='abc.txt'

file_obj =open(file_name)

# 读取文件内容 read(),读取的内容以字符串返回

content = file_obj.read()

print(content,type(content))

# ajkavauyvunaknv  <class 'str'>

# 关闭文件 .close()

file_obj.close()

content = file_obj.read()

print(content,type(content))

# ValueError: I/O operation on closed file.        # 说明文件成功关闭


-->忘记close()的解决措施with...as...--专门位文件设置

一旦with...as...语句结束,文件自动关闭

file_name ='abc.txt'

file_obj =open(file_name)

with open(file_name)as file_obj:

content = file_obj.read()

print(content)

print(file_obj.read())            #ValueError: I/O operation on closed file.


-->与异常处理结合操作

file_name ='abc1.txt'

try:

with open(file_name)as file_obj:

content = file_obj.read()

print(content)

except FileNotFoundError:

print(f'{file_name}文件不存在')

# abc1.txt文件不存在

-->二进制文件的读写

读取方式:

             t:读取文本文件(默认)

             b:读取二进制文件

# file_name = r'C:\Users\User\Desktop\blackCat_expression.mp3'

# try:

#    with open(file_name,'rb') as file_obj:

#        print(file_obj.read(100))

# except FileNotFoundError:

#    print(f'{file_name}不存在')

# 模式未指定为rb

UnicodeDecodeError: 'gbk' codec can't decode byte 0xff in position 21: illegal multibyte sequence   

#  模式指定为rb b"ID3\x03\x00\x00\x00\x01{lTSSE\x00\x00\x00\x1d\x00\x00\x01\xff\xfeL\x00a\x00v\x00f\x005\x007\x00.\x008\x003\x00.\x001\x000\x000\x00COMM\x00\x00\x02s\x00\x00\x00XXX\x00163 key(Don't modify):L64FU3W4YxX3ZF"

-->将读取的二进制文件写成MP3文件

file_name =r'C:\Users\User\Desktop\blackCat_expression.mp3'

with open(file_name,'rb')as file_obj:

    new_name ='blackCat_expression.mp3'

        with open(new_name,'wb')as new_obj:

                chunk =100 *1024  #指定读取大小

                while True:

                        cont = file_obj.read(chunk)

                        if not cont:

                                break

                        new_obj.write(cont)

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 基本语法 输入输出 print / input 如果字符串里面有很多字符都需要转义,就需要加很多\,为了简化,Py...
    bitzoo阅读 5,595评论 0 0
  • 1/579文件IO文件介绍I/O流流的概念读写文件文件备份IO介绍大家应该听说过一句话:“好记性不如烂笔头”。不仅...
    清清子衿木子水心阅读 5,355评论 0 1
  • 目录 一,python 字符串 二,Python列表(List) 三,Python 元组 四,Python字典 五...
    weiwei_js阅读 2,801评论 0 0
  • pyton review 学习指南 https://www.zhihu.com/question/29138020...
    孙小二wuk阅读 4,716评论 0 2
  • 一、Python数据类型转换 函数描述int(x [,base])[https://www.runoob.com/...
    loongod阅读 2,498评论 0 0