ddf7fd123894a7c90982b5747d7cf313.png

✍前言

欢迎加入纯干货技术交流群Disaster Army:317784952

最终想要让python发挥核武器一般的威力,仅靠它自身是远远不够的,众人拾柴火焰高,今天学习一下在python中读写文件和导入模块。

读写文件

文件打开

python3的读写格式遵循以下模式:

with open("文件路径", "打开模式", encoding = "操作文件的字符编码") as f:   # 使用with块可执行完毕省去close命令
    "对文件进行对应的读写"

那么我们可以按照上面的模板进行读写操作,文件路径妇孺皆知不必多言,打开模式分很多种:

参 数功 能r只读模式,如果文件不存在及报错w覆写模式,如果文件不存在及新建文件x创写模式,如果文件不存在及新建文件,如果文件存在及报错a追加模式,如果文件不存在及新建文件,如果文件存在及追加写b二进制文件模式,配合使用“rb”,“wb”,“ab”,该模式不需要指定encodingt文本模式,为默认模式+与“r”,“w”,“x”,“a”配合使用,及“w+”等格式,在原功能基础上增加读写功能

encoding字符编码通常用到万国码utf-8或中文编码gbk,然后将其命名为f,写入内容:两个黄鹂鸣翠柳,n", "一行白鹭上青天。n","窗含西岭千秋雪,n", "门泊东吴万里船。n,我们写出如下代码:

with open(".Desktopgogo2.txt", "w", encoding="utf-8") as f:
    text = ["两个黄鹂鸣翠柳,n", "一行白鹭上青天。n","窗含西岭千秋雪,n", "门泊东吴万里船。n"]
    print(text)
92a55ec0c4b271c9d44cc7a3462e82cb.png

.表示根目录C:Users你的用户名,接下来对该文件进行读取:

with open(".Desktopgogo2.txt", "r", encoding="utf-8") as f:
    text = f.read()
    print(text)
160a9d9d31b15afc1c44e569e8717acb.png

进行逐行读取

全部逐行读取:

with open(".Desktopgogo2.txt", "r", encoding="utf-8") as f:
    while True:
        text = f.readline()
        if not text:
            break
        else:
            print(text, end="") #取消print换行保留原始换行
69a3f56e6fe9cfc3a53d44b28541a065.png

指定逐行读取:

with open(".Desktopgogo2.txt", "r", encoding="utf-8") as f:
    text_1 = f.readline()
    print(text_1, end="")
    text_2 = f.readline()
    print(text_2, end="")
    text_3 = f.readline()
    print(text_3, end="")
dbae4a80937f248a18f34f3c039017cd.png

二进制文件读取

with open(".Desktopgogo3.png", "rb") as f:
    text = f.read()
    print(text)
a31a0dae910793c1de2d1a9dc09e31fe.png

读写模式

操作模式为“r+”

with open(".Desktophello.txt", "r+", encoding="utf-8") as x:
    # f.writelines(text)
    x.seek(0,2)     # 把光标移动到文本末尾
    text = ["n", "who is your dad?"]
    x.writelines(text)
    print(text)
29269c6a719d764f7732e99c4924d339.png

❌常见程序异常提醒

这个有什么用呢?要知道开发者设计好的道路,用户才不管你的规则,用起来就像这个样子:

57f4bbb112fc07daf92cccf62715c559.png

所以一定要设置错误提醒,告诉用户需要输入什么,不能输入什么,发生报错是什么原因。常见的程序异常类型如下:

非法语句

SyntaxError: invalid syntax

无法找到文件

FileNotFoundError: [Errno 2] No such file or directory:

值错误

ValueError

索引错误

IndexError

类型错误

TypeError

万能异常

Exception

try/except尝试预判错误,用as显示错误类型:

try:
    with open(".Desktopgogo2.txt", "r", encoding="utf-8") as f:
        text = f.read()
except FileNotFoundError:
    print("小主,找不到您要的文件!")
else:
    for s in ["n", ",", "。"]:        # 去除文中标点及换行
        text = text.replace(s, "")
    print("gogo2.txt共有{}个字组成" .format(len(text)))

可能得出如下两种结果:

14f193062b34b366f6f8286d110bf1a9.png

53b73818b61f768e19f464ba57fa8d55.png

模块导入

模块分类

  1. python内置模块
  2. 第三方模块
  3. 自定义模块

模块使用

  1. 导入整个模块——import 模块名成
  2. 导入模块函数——from模块import类名或函数名
from itertools import product       # 从itertools模块中导入product函数
ls = list(product('AB', '123'))     # 构造它们的笛卡尔积
print(ls)
  1. 导入模块所有函数——from模块import*
from random import *        # 导入random模块中的所有函数
print(randint(1,100))       # 1-100的随机整数
print(random())     # 0-1的随机小数
88f91cc97c1ad9c47f8eb4a4779b098a.png

小结

这几天睡眠质量明显下降,可能是盯在电脑前面太久了。也许我并不是一个适合玩技术的人,太伤肾太伤腰……两权相害取其轻,比起头发来说,技术根本不值一提(咦?什么鬼?文章总结怎么走出煽情路线?)。要不是这几天一直有人在线作伴,怕是要憋出蛇精病了吧!

python在Win10中可以直接从官方应用市场安装,方便的一批,与此同时我也隐约感觉到路径的问题是不是就是因为这个造成的呢?在文件读写那一块真的折磨了我好久,必须得是".Desktopgogo2.txt"才可以,“C:Users用户名Desktopgogo2.txt”就不行呢,什么鬼?如果不指定路径,默认的.py文件会生成在“C:Users用户名”下,果然python最好的运行环境还是Linux。等着,总有一天会打通任督二脉!