图片说明
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')

  1. read() 读出所有的文本
  2. readline() 读一行
  3. readlines() 每一行作为独立的字符串,然后放入列表返回
    读过的部分就不会再读了
    file.close()
  4. write(str)将字符串内容写入文件
  5. writelines(s_list)将字符串列表写入文本文件
  6. seek()
  7. 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() 用于判断是否为路径