• 第八章 永久存储[DDT书本学习 小甲鱼]【3】


    8.2 文件系统:介绍一个高大上的东西
    Python自身带有很多使用的模块。
    比如random模块的randint()函数生成随机数,不能直接调用,要引入。
    import random
    random.randint(0,9)
    ========================================================
    OS模块,就是Operating System的缩写,意思是操作系统,平时说的ios是指
    iPhone OS的意思,苹果操作系统。
    Python是跨平台语言,同样代码在不同的操作系统不需要修改代码。
    有了OS模块,不需要关系系统,OS模块会帮我们选择合适的模块并且调用。
    ---------------------------------------------------------------------------
    表8-3 OS模块中关于 文件/目录 常用的函数使用方法
    getcwd()返回当前工作目录
    chdir(path)改变工作目录
    listdir(path=".")列举指定目录的文件名("."表示当前目录,".."表示上一级目录)
    -------------------------------
    mkdir(path)创建单层目录,如果存在则抛出异常
    makedirs(path)递归创建多层目录,目录存抛异,注意"E:\a\b"和"E:\a\c"不冲突
    -----------------------------------
    remove(path)删除文件
    --------------------------------------
    rmdir(path)删除单层目录,如果该目录非空则抛出异常
    removedirs(path)递归删除目录,从子目录到父目录逐层尝试删除,遇到非空抛出异常
    ----------------------------------------
    rename(ole,new)将文件ole重命名为new
    ----------------------------------------
    system(command)运行系统shell命令
    ---------------------------------------------------------------------------
    1.getcwd() 经常用来获取应用程序当前工作目录
    import os
    print(os.getcwd())
    ----------------------
    C:PycharmProjectsmy1

    2.chdir(path)改变当前工作目录,比如切换到E盘
    import os
    print(os.getcwd())
    os.chdir("E:\")
    print(os.getcwd())
    -------------------
    C:PycharmProjectsmy1
    E:

    3.listdir(path=".") 当前目录下的文件和子目录,列举出来。".."代表上层目录。
    import os
    print(os.chdir("E:\迅雷下载\"))
    print(os.listdir(".."))
    -----------------------------
    ['$RECYCLE.BIN', 'PCKii', 'System Volume Information', 'u盘', '元旦会', '壁纸', '电影', '迅雷下载']

    4.mkdir(path)创建文件夹,如果存在,报异常。
    import os
    os.chdir("E:\")
    os.mkdir("test")
    print(os.listdir('.'))
    ----------------------------
    ['$RECYCLE.BIN', 'PCKii', 'System Volume Information', 'test', 'u盘', '元旦会', '壁纸', '电影', '迅雷下载']
    ================再次运行程序,结果如下========================
    Traceback (most recent call last):
    File "C:/PycharmProjects/my1/t2.py", line 3, in <module>
    os.mkdir("test")
    FileExistsError: [WinError 183] 当文件已存在时,无法创建该文件。: 'test'

    5.makedirs(path)创建多层目录 目录存在抛出异常
    import os
    os.chdir("E:\")
    os.makedirs(r".ac") # r".ae" 不抛出; r".a"抛出异常

    6.remove()删除指定的文件
    rmdir(path)删除目录
    removedirs()删除多层目录
    ===========开始我的表演========================
    import os
    os.chdir("E:\")

    print("起始情况:")
    print(os.listdir())


    print("创建工作:")
    open(os.getcwd()+"test.txt","w")
    os.mkdir("a")
    os.makedirs(r".cd")
    print(os.listdir())

    print("删除工作:")
    os.remove("test.txt")
    os.rmdir("a")
    os.removedirs(r".cd")
    print(os.listdir())
    --------------------------------------
    起始情况:
    ['$RECYCLE.BIN', 'PCKii', 'System Volume Information', 'u盘', '元旦会', '壁纸', '电影', '迅雷下载']
    创建工作:
    ['$RECYCLE.BIN', 'a', 'b', 'PCKii', 'System Volume Information', 'test.txt', 'u盘', '元旦会', '壁纸', '电影', '迅雷下载']
    删除工作:
    ['$RECYCLE.BIN', 'PCKii', 'System Volume Information', 'u盘', '元旦会', '壁纸', '电影', '迅雷下载']

    7.rename(old,new) 重命名文件或者文件名
    import os
    os.chdir(r"E: est")
    print(os.listdir())
    os.rename("a","b")
    os.rename("tanke.txt","plane.txt")
    print(os.listdir())
    ---------------------------
    ['a', 'tanke.txt']
    ['b', 'plane.txt']
    ========================================

    8.system(command)每个操作系统都会提供一些小工具,用于调用。
    os.system("calc") 调用系统的计算器

    9.walk(top)有时候非常有用,遍历top参数制定路径下的素有子目录,并且返回一个
    三元组(路径,[包含目录],[包含文件])
    代码如下
    import os
    os.chdir("E:\")
    for i in os.walk("test"):
    print(i)
    --------------------------------
    ('test', ['bin', 'obj'], ['20fdgfdgfd.ico', 'chinaz4.ico'])
    ('test\bin', ['Debug'], [])
    ('test\bin\Debug', ['app.publish'], ['捣蛋头-电话骚扰器.exe', '捣蛋头-电话骚扰器.exe.manifest'])
    ('test\bin\Debug\app.publish', ['Application Files'], ['setup.exe', 'WindowsFormsApplication14.application'])
    ('test\bin\Debug\app.publish\Application Files', ['WindowsFormsApplication14_1_2_4_2'], [])
    ('test\bin\Debug\app.publish\Application Files\WindowsFormsApplication14_1_2_4_2', [], ['20fdgfdgfd.ico.deploy', 'chinaz4.ico.deploy'])
    ('test\obj', ['x86'], [])
    ('test\obj\x86', ['Debug'], [])
    ('test\obj\x86\Debug', ['TempPE'], ['DesignTimeResolveAssemblyReferences.cache', 'DesignTimeResolveAssemblyReferencesInput.cache', 'GenerateResource.read.1.tlog', 'GenerateResource.write.1.tlog'])
    ('test\obj\x86\Debug\TempPE', [], [])
    =============================================================
    另外,path模块还提供了一些实用的定义,分别是:
    os.curdir 表示当前目录
    os.pardir 表示上一级目录("..")
    os.sep 表示路径的分隔符 windows系统为"\" 而Linux为"/"
    os.linesep 表示当前平台使用的行终止符 windows系统为" " 而Linux为" "
    os.name 表示当前使用的操作系统 Windows 返回 ‘nt'; Linux 返回’posix'。
    =============================================================================

    另一个强大的【模块是os.path】,它可以完成一些针对路径名的操作,如表所示【略】
    列举几个,介绍如下:
    10.basename(path)和dirname(path)分别用于获取文件名和路径名,举例
    import os
    print(os.path.dirname(r"a est.txt"))
    print(os.path.basename(r"a est.txt"))
    --------------------------------------------
    a
    test.txt

    =============================

    11.join(path1,path2)与BIF的那个join()不同,os.path.join()用于路径和文件名组合
    成为完整路径。
    import os
    k=os.path.join(r"C:Python37Test","FishC.txt")
    print(k)
    ------------------
    C:Python37TestFishC.txt
    ===========================================================

    12.split(path)和splitext(path) 都是用于分割路径。
    第一个比较盲目,如果全是目录,就会把最后一个目录当文件名,第二个高级智能一些。
    示例如下:
    import os
    a=os.path.split("C:Python37TestFishC.txt")
    b=os.path.splitext("C:Python37TestFishC.txt")
    c=os.path.split("C:Python37Test")
    print(a)
    print(b)
    print(c)
    -----------------------------------------------------
    ('C:\Python37\Test', 'FishC.txt')
    ('C:\Python37\Test\FishC', '.txt')
    ('C:\Python37', 'Test')

    13.getsize(file) 返回文件的大小,字节为单位
    import os
    os.chdir(r"D:360DownloadsSoftware")
    print(os.path.getsize("360.exe"))
    -------------------------------
    11912512
    ===========================

    14.getatime(file),getctime(file)和getmtime(file)
    最近访问时间-----创建时间-----修改时间
    不过返回的是浮点型秒数,用time模块的gmtime()或localtime()换算。
    示例代码如下:
    import time
    import os
    os.chdir(r"D:360DownloadsSoftware")
    temp=time.localtime(os.path.getatime("360.exe"))
    print("文件被访问的时间是:",time.strftime("Y% %b %d %H:%M:%S",temp))
    ------------------------------------------------------------------
    文件被访问的时间是: 2019 Feb 05 21:28:43
    ----------------个人小结-----------------------
    import time
    import os
    print(time.strftime("%Y%b%d %H:%M:%S",time.localtime(time.time())))
    先是由time.time()得到当前时间的浮点值
    再由time.localtime()进行元组整理
    最后由time.strftime()格式化展示出来
    ==========================================================================
    ================================= pickle 腌制美味泡菜 ====================
    1 从文件读取字符串很简单,但是要读取数值,就要多费周折。
    无论read()还是readline()方法,返回的都是一个字符串,如果要从字符串中提取数值,
    可以使用int()或者float()把类似“123”或者“3.14”的字符串强制转化。
    2 以前保存文本容易,但是要保存的数据如列表,字典甚至是类的实例这些更复杂的数据类型,
    普通文件操作就不知所措了,也许你会把他们全部转换为字符串,再写入文本进行保存,但
    是,要把这个过程反过来,文本恢复数据到对象,那就异常麻烦了。
    所以,模块出现了,这个就是pickle模块。
    ========================== pickle模块 =========================
    import pickle
    my = [123, 3.14, "导弹头", ["其它列表"]]
    f = open(r"C:UsersDaodantouDesktop i.bo", "wb")
    pickle.dump(my,f) #拿泡菜罐 放入东西 压紧保存
    f.close()
    -------------------------------已经保存,但是打开是乱码------------------
    import pickle
    e = open("C:\Users\Daodantou\Desktop\ri.bo", "rb")
    my1 = pickle.load(e) #取出泡菜
    print(my1)
    e.close()
    ------------------------------正常读取文件到程序-------------------------

    Daodantou:“不积跬步,无以至千里.”
  • 相关阅读:
    .net core3.1 abp动态菜单和动态权限(思路) (二)
    .net core3.1 abp学习开始(一)
    api.versioning 版本控制 自动识别最高版本
    .netcore 定制化项目开发的思考和实现
    netcore 非注入全局获取配置文件
    linux nginx搭建与使用
    linux docker .net core 从建立网站到预览
    linux 学习 mysql安装到连接
    linux 安装redis及问题收集
    为何说要多用组合少用继承?如何决定该用组合还是继承?
  • 原文地址:https://www.cnblogs.com/daodantou/p/10357899.html
Copyright © 2020-2023  润新知