Python的默认编码格式为:UTF-8
最前面加上#encoding=gbk,格式变为ANSI
不同的编码方式所占用的空间大小也是不同的
读取磁盘文件'r'
这里的a.txt文件是ANSI类型,在Python环境下是乱码,如果改成UTF-8类型,再运行demo2就会报错
file=open('a.txt','r') #r表示 只读 的文件打开模式,文件的指针将会放在文件的开头 print(file.readlines()) #读取的结果是一个列表 readlines 读取文件磁盘的内容 file.close()
只写打开模式'w'
文件不存在就创建一个,存在就覆盖原有的内容
file=open('b.txt','w') #生成的文件格式为UTF-8 file.write('helloword') file.close()
文件追加模式'a'
文件不存在就创建,文件存在就在后面追加内容
file=open('c.txt','a') file.write('Python\t') file.close()
读取二进制文件'rb'
二进制文件用字节进行存储(mp3,mp4,jpg,doc),记事本无法打开,必须使用专门的软件打开。
src_file=open('证件照.jpg','rb') #读二进制文件 target_file=open('copyfile.jpg','wb') #写二进制文件 target_file.write(src_file.read()) target_file.close() src_file.close()
文件对象的常用方法
file=open('a.txt','r')
- read() 读出所有的文本
- readline() 读一行
- readlines() 每一行作为独立的字符串,然后放入列表返回
读过的部分就不会再读了
file.close() - write(str)将字符串内容写入文件
- writelines(s_list)将字符串列表写入文本文件
- seek()
- tell()返回文件指针的当前位置
file=open('a.txt','r') file.seek(2) #一个中文占两个字节,跳过了中 print(file.read()) print(file.tell()) #tell()返回指针的当前位置 file.close()
结果为:
国
美丽
10
那么为什么指针的位置是10呢?
答:
0 1 2 3 4 5
中 国 \ n
6 7 8 9 10
美 丽 | 指针刚好在10 的位置
8.flush()把缓冲的内容写入文件,但不关闭文件
9.close()关闭所有文件
file=open('d.txt','a') file.write('hello') file.flush() file.write('world') file.close()
flush之后'world'还是可以被写入,但是close之后,不能写入文字!
with 语句 (上下文管理器)
离开with语句时,会自调用exit()方法,动释放资源,这样就不用手动关闭资源了。
with open('证件照.jpg','rb') as src_file: with open('copy21logo.jpg','wb') as target_file: target_file.write(src_file.read())
os模块
os模块是一个与操作系统相关的一个模块
import os#导入os模块 os.system('notepad.exe') #打开了记事本 os.system('calc.exe') #打开计算器 #打开可执行的文件 os.startfile('C:\\Program Files (x86)\\Tencent\\TIM\\Bin\\QQScLauncher.exe') #打开了我的TIM
os模块操作目录相关函数
1.getcwd(path) 返回当前工作目录
import os #导入os模块 print(os.getcwd())
2.listdir(path) 反还指定路径下的文件和目录信息
import os #导入os模块 print(os.listdir('/sym/BasePython/venv/day8'))
3.mkdir(path) 创建目录
import os #导入os模块 os.mkdir('newdir') #使用了一次就用不了了
4.makedirs(path1/path2/path3) 创建多级目录
import os #导入os模块 os.makedirs('A/B/C')
5.rmdir(path) 删除目录
import os #导入os模块 os.rmdir('newdir')
6.removedirs(path1/path2/path3) 删除多级目录
import os #导入os模块 os.removedirs('A/B/C')
7.chdir(path) 设置为当前工作目录
import os #导入os模块 os.chdir('D:\\BasePython\\venv\\day9\\demo2.py') print(os.getcwd())
os.path模块操作目录相关函数
1 ——os.path.abspath()用于获取文件或者目录的绝对路径。
创建一个demo1.py文件,编写以下程序:
import os.path print(os.path.abspath('demo1.py'))#用于获取文件或者目录的绝对路径
2 ——os.path.exists()判断目录是否存在
print(os.path.exists('demo1.py'),os.path.exists('demo13.py')) #True False
3 ——os.path.jion() 将目录和目录 或者文件名和文件名拼接起来
print(os.path.join('D:\\sunyiming\\','demo13.py'))
4 ——os.path.splitext() 分离文件名和扩展名
print(os.path.splitext('demo2.py'))
结果:('demo2', '.py')
5 ——os.path.basename()从一个目录中提取文件名
print(os.path.basename('D:\\BasePython\\venv\\day9\\demo2.py'))
结果:demo2.py
6 ——os.path.dirname() 从一个路径中提取文件路径,不包括文件名
print(os.path.basename('D:\\BasePython\\venv\\day9\\demo2.py'))
结果:D:\BasePython\venv\day9
7 ——os.path.isdir() 用于判断是否为路径