文件操作


#文件操作
#打开文件 open
#默认编码是gbk,这个是中文编码
#open('文件名称','打开模式'),如果文件不存在,自动创建
# fobj=open('./Test.txt','w',encoding='utf-8')#./表示当前路径
# #开始操作 读/写操作
# fobj.write('孤芳自赏')
# fobj.write('一人独醉')
# fobj.close()

#以二进制形式写数据
# fobj=open('Test-1.txt','wb')
# # fobj.write('缥缈之梦'.encode('utf-8'))
# # fobj.close()

# fobj=open('Test.txt','a',encoding='utf-8')#用于追加数据
# fobj.write('缥缈之梦/r/n')
# fobj.write('遥不可及/r/n')
# fobj.close()

fobj=open('Test.txt','a')#用于追加数据,二进制形式
fobj.write('缥缈之梦/r/n')
fobj.write('遥不可及/r/n')
fobj.close()
#读文件

f=open('Test-1.txt','r',encoding='utf-8')
# print(f.read())
print(f.read(3))#读的字数
print(f.read())#从第一次读的字数后开始
print(f.readline())#读一行
print(f.readlines())#读全部行,返回列表

#with 上下文管理对象,自动释放对象
# with open(。。。) as f:
      #文件操作
#不需要添加close


#小结:
#文件读写的几种方式:
#read  r r+ rb rb+
#r r+ 只读    使用普通读取场景
#rb  rb+ 适用于文件 图片 视频 音频 文件读取
# write w  w+  wb  wb+  a  ab
#w  wb+ w+ 每次都会创建文件
#二进制读写时,要注意编码问题 默认情况下 是gbk
#a ab  a+ 在原有文件的基础之后去追加

 

文件自动备份:

def copyFile():
    #接收用户输入的文件名
    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()
    pass
copyFile()


#备份大文件
def copyBigFile():
    #接收用户输入的文件名
    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:
                conent=old_f.read(1024)#一次读取1024字符
                new_f.write(conent)
                if len(conent<1024):
                    break
    except Exception as msg:
        print(msg)
    pass

 

#tell 返回指针当前所在的位置
#gbk   中文占两个字符, utf-8  中文占三个字符
# with open('Test-1.txt','r',encoding='utf-8') as f:
#     print(f.read(3))
#     print(f.tell())

#truncate 可以对源文件进行截取操作
# fobj=open('Test-1.txt','r',encoding='utf-8')
# print(fobj.read())
# fobj.close()
# print('截取之后的数据====')
# fobjA=open('Test-1.txt','r+',encoding='utf-8')
# fobjA.truncate(3)
# print(fobjA.read())
# fobjA.close()

#seek 可以控制到光标所在的位置
with open('Test-1备份.txt','rb')as f:
    data=f.read(2)
    print(data.decode('gbk'))
    f.seek(-2,1)#相当于光标又设置到了0的位置
    print(f.read(4).decode('gbk'))

#seek(-6,2)2 表示光标在末尾处,往回移动6个字符
#seek(4,0)0 表示光标在开头处,往前移动4个字符
#seek(-2,1)1表示从光标当前位置,往回移动两个字符

 

模块导入:

# import time
# print(time.ctime())
# import 在首次导入模块的时候,会发生如下3步操作
#1 打开模块文件
#2.执行模块对应的文件,将执行过程中产生的名字都丢到模块名称空间
#3.在程序中会有一个模块的名称指向模块的名称空间去

from time import ctime,time #部分导入
print(ctime())

#from....import   ctime 首次导入发生了3个步骤
#1.以模块为准创建一个模块的名称空间
#2.执行模块对应的文件了,将执行过程中产生的名字都丢到模块名称空间
#3在当前执行文件的文件空间拿到了一个名字,该名字直接指向模块中的某一个名字


import os
os.rename('Test.txt','Text-重命名.txt')

 

#模块的定义:
#在python当中一个.py文件就是一个模块
#作用:
#可以使我们有逻辑的去组织我们的python代码
#以库的形式去封装功能,非常方便的去让调用者去使用
#可以定义函数 类 变量 也能包含可执行的代码
#注意:不同的模块可以定义相同的变量名,但是每个模块的变量名作用域只是在本模块中

# 模块分类:
# 内置模块 自定义模块

#模块的制作说明
__all__=['add','diff'] #以from....import  导入时,指定哪些方法可以被调用,import方式导入无所谓
def add(x,y):
    return x+y
def diff(x,y):
    return x-y
def printpro():
    return '只是我自定义的方法'
if __name__=='__main__':
    res=add(2,5)
    print(res)
    print(' 模块__name__变量=%s'%__name__)

  

原创文章,作者:,如若转载,请注明出处:https://blog.ytso.com/tech/pnotes/277909.html

(0)
上一篇 2022年7月30日 19:21
下一篇 2022年7月30日 19:21

相关推荐

发表回复

登录后才能评论