#文件操作 #打开文件 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