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