Python编程基础(四)
打卡第四天啦!!!
文件操作与模块
文件打开关闭
- 文件打开模式:
(1)w:打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件
fobj=open('./Test.txt','w')
fobj.write('潘小雷的Python之旅')
fobj.close()
(2)wb:以二进制格式打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件
fobj=open('Test.txt','wb')
fobj.write('潘小雷的Python之旅'.encode('utf-8'))
fobj.close()
(3)a:打开一个文件用于追加,如果该文件已存在,文件指针将会放在文件的结尾,也就是说,新的内容将会被写入到已有内容之后,如果该文件不存在,创建新文件进行写入
fobj=open('Test.txt','a')
fobj.write('潘小雷的Python之旅\r\n')
fobj.write('人生苦短,我学Python\r\n')
fobj.close()
(4)r:以只读方式打开文件,文件指针将会放在文件的开头,这是默认模式
f=open('Test.txt','r')
print(f.read())
print(f.read(6))
print(f.readline())
f=open('Test.txt','rb')
data=f.read()
print(data,type(data))
b=data.decode('GBK')
print(b,type(b))
with上下文管理
- 优点:自动释放打开关联的对象
with open('Test.txt','r') as f:
print(f.read())
案例:备份文件
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 copyFile():
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)
pass
copyFile()
文件定位
- 文件定位,指的是当前文件指针读取到的位置,光标位置,在读写文件的过程中,如果想知道当前的位置,可以使用tell()来获取
with open('Test.txt','r') as f:
print(f.read(3))
print(f.tell())
pass
fobjB=open('Test.txt','r')
print(fobjB.read())
fobjB.close()
print('------------截取之后的数据------------')
fobjA=open('Test.txt','r+')
fobjA.truncate(10)
print(fobjA.read())
fobjA.close()
with open('Test.txt','rb') as f:
data=f.read(6)
print(data.decode('gbk'))
f.seek(-4,1)
dataA=f.read(4)
print(dataA.decode('gbk'))
pass
- 在文本文件中,没有使用二进制的选项打开文件,只允许从文件的开头计算相对位置
模块
import导入模块
- import首次导入模块时会发生如下三步操作
(1)打开模块文件 (2)执行模块对应的文件,将执行过程中产生的名字都丢到模块的名称空间 (3)在程序中会有一个模块的名称指向模块的名称空间去 - from…import 只想导入模块中的几个函数
- 加别名 import…as…
Python-os模块使用
import os
os.rename('Test.txt','Test1.txt')
os.remove('Test1.txt')
os.mkdir('Test')
os.rmdir('Test')
print(os.getcwd())
print(os.path.join(os.getcwd(),'venv'))
listRs=os.listdir('C:\pycharm_workspace')
for dirname in listRs:
print(dirname)
with os.scandir('C:\pycharm_workspace') as entries:
for entry in entries:
print(entry.name)
pass
pass
模块制作
- 模块定义:在Python当中,一个.py文件就是一个模块
- 作用:可以使我们有逻辑地去组织我们的Python代码,以库的形式去封装功能,非常方便去让调用者去使用,并且可以定义函数类和变量,也能包含可执行的代码
- 不同的模块可以定义相同的变量名,但是每个模块中的变量名作用域只在本模块
- 模块分为内置模块、自定义模块、第三方模块
- 如果一个文件中存在__all__变量,那么也就意味着这个变量中的元素会被from XXX import *时被导入,但对于import方式不影响
__all__=['add','diff','printInfo']
def add(x,y):
return x+y
def diff(x,y):
return x-y
def printInfo():
print('自定义方法')
if __name__=='__mian__':
print('模块__name__变量:{}'.format(__name__))
|