Python编程基础
Posted 雨宙
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python编程基础相关的知识,希望对你有一定的参考价值。
Python编程基础(四)
打卡第四天啦!!!
文件操作与模块
文件打开关闭
- 文件打开模式:
(1)w:打开一个文件只用于写入,如果该文件已存在则将其覆盖,如果该文件不存在,创建新文件
# 打开文件
# 默认编码是GBK
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()) # 读取所有数据
# 潘小雷的Python之旅
# 人生苦短,我学Python
print(f.read(6))
# 潘小雷的Py
print(f.readline())
# 潘小雷的Python之旅
f=open('Test.txt','rb')
data=f.read()
print(data,type(data))
b=data.decode('GBK')
print(b,type(b))
# b'\\xc5\\xcb\\xd0\\xa1\\xc0\\xd7\\xb5\\xc4Python\\xd6\\xae\\xc2\\xc3\\r\\xc8\\xcb\\xc9\\xfa\\xbf\\xe0\\xb6\\xcc\\xa3\\xac\\xce\\xd2\\xd1\\xa7Python' <class 'bytes'>
# 人生苦短,我学Python <class 'str'>
with上下文管理
- 优点:自动释放打开关联的对象
with open('Test.txt','r') as f:
print(f.read())
# 潘小雷的Python之旅
# 人生苦短,我学Python
案例:备份文件
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) # 一次读取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
# 潘小雷
# 6
fobjB=open('Test.txt','r')
print(fobjB.read())
fobjB.close()
print('------------截取之后的数据------------')
fobjA=open('Test.txt','r+')
fobjA.truncate(10)
print(fobjA.read())
fobjA.close()
# 潘小雷的Python之旅
# ------------截取之后的数据------------
# 潘小雷的Py
# seek 控制光标所在位置
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())
# C:\\pycharm_workspace\\hello
# 路径拼接
print(os.path.join(os.getcwd(),'venv'))
# C:\\pycharm_workspace\\hello\\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
# hello
# hello
模块制作
- 模块定义:在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__))
以上是关于Python编程基础的主要内容,如果未能解决你的问题,请参考以下文章
Arduino 到 Python:如何使用 ser.readline() 将读数导入到具有指定起点的列表中?
用 Python 生成的 Tensorflow 数据集在 Tensorflow Java API(标签图像)中有不同的读数