zoukankan      html  css  js  c++  java
  • python08——文件操作与模块

    1.文件打开关闭与读写

    打开文件、写入文件

    fobj=open('test.txt','w',encoding='utf-8')   ##打开文件
    fobj.write('大风大雨我不怕')  ##写入文件
    fobj.write('一边走一边唱')  ##写入文件
    fobj.close()   ##保存并关闭
    fobj=open('test.txt','wb')  #str-->bytes  ##打开文件
    fobj.write('在乌云下'.encode('utf-8'))  ##写入文件
    fobj.close()   ##保存并关闭
    fobj=open('test.txt','a')  #str-->bytes  ##打开文件
    fobj.write('在乌云下
    ')  ##写入文件
    fobj.write('发呆
    ')
    fobj.close()   ##保存并关闭

    w——会覆盖

    a——会追加

    wb——以二进制格式覆盖

    以二进制的形式去写数据

    读文件:

    read()——将文件内容全部取出

    readlines()——按行读取,一次性读取所有内容,返回一个列表,每行内容作为一个元素

    f=open('test.txt','r')
    #print(f.read(5))  #读5个
    #print(f.read())  #读全部  会接在5个后面读全部
    #print(f.readline())  #读一行
    #print(f.readline())  #再读一行
    #print(f.readlines())  #按行读取全部,返回列表

    r——只读

    rb——以二进制模式读(适用于图片、视频、音频)

    f=open('test.txt','rb')
    data=f.read()
    print(data.decode('utf-8'))
    f.close()

    with语句:  自动关闭文件

    with open('test.txt','r') as f:
        print(f.read())

    3.应用:文件备份脚本

     一次性读取,只适用于小文件

    def bkFile():
        ###接收用户输入的文件名
        old_file=input('请输入要备份的文件:')
        file_list=old_file.split('.')
        ##构造新的文件名,加上备份的的后缀
        new_file=file_list[0]+'_备份.'+file_list[1]
        old_f=open(old_file,'r')
        new_f=open(new_file,'w')    ##以写的模式打开新文件,不存在就创建
        content=old_f.read()
        new_f.write(content)
        old_f.close()
        new_f.close()
    bkFile()
    一次性读取
    def bkBigFile():
        ###接收用户输入的文件名
        old_file=input('请输入要备份的文件:')
        file_list=old_file.split('.')
        ##构造新的文件名,加上备份的的后缀
        new_file=file_list[0]+'_备份.'+file_list[1]
        try:
            ###监视要处理的逻辑
                with open(old_file,'r') as old_f,open((new_file),'w') as new_f:
                    while True:
                        content=old_f.read(1024)
                        new_f.write(content)
                        if len(content)<1024:
                            break
        except Exception as msg:
                print(msg)
    
    
    bkBigFile()
    分块读取

    4.文件定位

     tell()     当前文件指针读取到的位置,通过tell获取 

    with open('test.txt','r') as f:
        print(f.read(3))
        print(f.tell())
        print(f.read(2))
        print(f.tell())    ##返回当前指针的位置:5

    truncate    可以对源文件进行截取操作

    fobjA=open('test.txt','r+')
    fobjA.truncate(15)   ##保留前15个字符
    print(fobjA.read())
    fobjA.close()

    seek(offset,from)     定位某个位置。偏移量offset,负数往回偏移,正数往前偏移;位置from,0开头,1当前,2末尾。

    d=open('test.txt','rb')  ###使用seek得使用rb模式
    print(d.read(5))   
    print(d.seek(-2,1))
    d.close()

    5.模块介绍

    #import  导入模块  
    import time
    #调用的时候time.函数名
    time.ctime()
    #取别名:
    import time as mytime
    
    ##部分导入的方法(调用时不用前缀了)
    from time import ctime,time
    from time import *全部导入

    一个.py文件就是一个模块,模块中的变量名作用只在本模块中

    ###三种导入方式
    import  moduleTest
    #from moduleTest import add
    #from moduleTest import *
    res=moduleTest.add(1,2)
    print(res)
    print(moduleTest.diff(2,1))

    moduleTest.py文件:

    __all__=['add','diff']   ##from…import *只能调用被all声明的
    def add(x,y):
        return x+y
    def diff(x,y):
    return x-y

    6.os模块操作文件

    #####常用方法:
    #修改文件名: rename(需要修改的文件名,新的文件名)
    import os
    os.rename(‘1.py ' ,'666.py ' )
    #删除文件: remove(待删除的文件名)
    import os
    os.remove( '3.py ' )
    #创建文件夹: mkdir(文件夹名称)
    import os
    os.mkdir( 'gl ')
    #删除文件夹: rmdir(文件夹名称)
    import os
    os.rmdir( 'gl')
    #获取当前目录: getcwd()
    import os
    os.getcwd()
    #切换目录: chdir(路径)
    import os
    os.chdir( ' ../' )
    #路径拼接:os.path.join(path1[, path2[, …])将多个路径组合后返回
    import os
    path =os.path.join(os.getcwd(), 'gl')

    7. 模块的制作、发布、安装

    模块的制作与发布:

    ①新建一个文件夹test,将moduleTest.py放进去,新建一个setup.py,内容如下:

    from distutils.core import setup
    #name模块名称
    #version 版本号#description描述#author作者
    #py_modules要发布的内容
    setup(name="test", version="1.0", description="my module",
    author="yh", py_modules=[ 'moduleTest'])

    ②在terminal中进去test中,输入命令:python setup.py build

    ③生成压缩包:python setup.py sdist

    安装:

    解压安装包,进入test-1.0目录下执行:pythonsetup.py install

    习题:

    1、现在有一个5G的大文件需要做备份,请写一个脚本备份这个文件。
    2、有一批文件需要在文件名加上日期,比如文件“亚瑟.py”,要重命名成“2020-6-9_亚瑟.py请编写程序完成重命名,(提示: 这个脚本会将当前文件夹下的所有文件重命名,最好新建
    一个测试文件夹完成)
    3、time, os模块使用(练习模块使用方法,熟悉模块各个方法)。
    4、编写一个自己的模块,发布并安装。
    5、题目:有两个磁盘文件A和B,各存放一行字母,要求把这两个文件中的信息合并(按字母顺序排列),输出到一个新文件C中。
    6、Python简陋版工资管理系统
    要求:
    彦100000盖伦80000莫甘娜50000赵信30000
    以上是info.txt文-----实现效果:
    从info.txt文件中读取员工及其工资信息,最后将修改或增加的员工工资信息也写入原info.txt文件。
    View Code
     
  • 相关阅读:
    终于搞明白Unicode,ASCII,UTF8,UCS2编码是啥了
    在IDEA中构建Tomcat项目流程
    在执行jar包时如何使用调优参数
    在浏览器运行JS脚本实现博客园文章批量删除
    线索二叉树之初步剖析(献给那些想形象思考二叉树遍历过程的人)
    二分查找c++实现
    c++学习之初话 函数指针和函数对象 的因缘
    继承与动态内存分配
    C++入门之初话多态与虚函数
    c++入门之类继承初步
  • 原文地址:https://www.cnblogs.com/yilia-er/p/14112011.html
Copyright © 2011-2022 走看看