第一部分 基本操作
一、文件的读取
File_one=opne(‘test.txt’,’w’,encoding=’uft-8’)
打开文件使用open函数
第一个参数:打开的文件
第二个参数:打开的模式,默认只读(r)打开
常用的模式有:
①r 只读,如果文件不存在 报错
②w 只写 的形式打开文件,不管文件存在不存在都创建新的文件,会清空文件(创建一个全新的出来,覆盖掉了原来的文件)
③a 追加 文件不存在则创建文件,文件存在则打开文件
④b 二进制打开
⑤+ 更新(读和写)
⑥a+写在文件后面(控制光标在文件的最后面),r+写在文件前面(控制光标在文件的最前面)
路径分为相对路径和绝对路径
1.相对路径:
①和代码文件在一个目录里直接写
eg :File_one=opne(‘test.txt’,’w’,encoding=’uft-8’)
②文件和代码文件的文件夹在一起 就是访问上层文件
eg:File_one=open(‘../test.txt’,’w’,encoding=’uft-8’)
备注:一个../代表一层
(就是不写在哪个盘)
2.绝对路径
绝对路径适用于不在一个盘的情况下,这个时候要注意转义符
Eg:File_one=open(r‘C:\Users\Desktop\a.txt’,’w’,encoding=’uft-8’)
二、文件的写入
①写入文件直接调用write方法,write方法每次只可以接受一个参数
eg: file_one.write(‘this is test file’)
②如果想要一次写入多个内容,那就需要用 writelines
eg : file_one.writelines([“Dada”,”Dada”]) #传列表,换行用\n
#往文件里写只能写入字符串类型的
三、文件的保存
写入文件时,一般先写入内存,只有调用flush刷新到硬盘中才能保存到文件
① f.flush() #刷新保存
② file_one.close() #关闭文件也会自动保存修改到文件中
四、调整光标
① file_one.tell() #当文件读取之后,可以调用tell方法查看文件中指针的位置
② file_one.seek(0) #当指针在末尾时读取不出内容,需要把指针移动到文件开头
f=open(r"pathname","a+",encoding='utf-8')
f.write("a")
f.writelines(["Sd","Da"])
a=f.tell() #当文件读取之后,可以调用tell方法查看文件中指针的位置
print(a)
f.flush()
f.seek(0) #当指针在末尾时读取不出内容,需要把指针移动到文件开头
print(f.read(1)) #读入指定数量的字符 如果不写就是读取全部
print(f.readline()) #读取一行
print(f.readlines()) #读取多行数据 放在一个列表里面,便于操作
#如果要中间某几行,用切片
#eg:
f_data=f.readlines() #读取多行,需要获得指定行数,可以切片
f.close() #关闭文件
#如果忘记关了 可以用with open
#with open 上下文件管理器,自动保存关闭文件
with open(r"pathname","a+",encoding='utf-8') as f:
print(f.read())
#如果必须用某种格式打开,errors='ignore'忽略错误
with open(r"pathname","a+",encoding='utf-8',errors='ignore') as f:
f.seek(0)
print(f.read())
第二部分 文件流
1.简介
①在内存中打开一个文件流,如同打开一个文件,程序运行结束后释放文件
②文件中可能存放字符串、音频、图像等,文件的格式不一样,存放图像音频的为二进制文件
import io
#字符串的临时io文件
str_io=io.StringIO() #在内存中打开一个文件流,如同打开一个文件
str_io.write("hello world")
str_io.seek(0)
print(str_io.read())
#文件流有getvalue方法可以获取内容
print(str_io.getvalue())
#二进制文件
byte_io=io.BytesIO() #内容是二进制的字符串主要用来存储图像、音频、视频等
byte_io.write(b'hello worlda') #b的作用是二进制化
print(byte_io.getvalue())
第三章 目录的相关操作
#文件目录的操作
import os #和操作系统交互,需要用到os模块
os.getcwd() #获取当前文件的目录
os.chdir(r"C:\Users\yyz\Desktop\vs") #切换路径
os.getcwd()
open('test.txt','w') #创建文件
os.listdir(r"C:\Users\Desktop\vs") #查看当前目录里下一层拥有的子文件
os.walk(r"C:\Users\Desktop\vs") #查看当前目录里拥有的所有的文件,会产生一个生成器列表
list(os.walk(r"C:\Users\Desktop\vs") ) #将生成器对象转换成列表,便于观察数据
os.mkdir("file") #创建文件夹,也支持对文件目录的操作
os.rename(("file","new_file")) #对文件夹改名字 ,也可以用于改文件的名字
os.makedirs() #创建多层目录
os.remove() #移动文件
os.rmdir() #删除目录
os.removedirs() #删除多层目录
os.system() #调用系统命令
#eg:查看自己的ip
os.system("ipconfig")
os.system("cmd") #执行完暂停在那里
os.walk() #遍历文件夹
os.path() #一般用于拼接路径
第四章 模块和包
1.概念
①模块:存放python文件
②包:存放了多个模块的文件夹
③库:存放了多个相关模块的文件夹
# 文件名.函数名() 可以直接调用要导入文件中的函数
#文件名要注意不要跟系统提供的模块名重复了
import datetime
print(datetime.datetime.now())
#使用from 来导入部分内容 as可以给导入的内容来重新命名
from datetime import datetime as dt,date,time
print(dt.now())
import sys
path=sys.path #使用sys.path 来查看模块的查找路径
#如果要添加其他的路径,只需要使用:sys.path.append(path)
sys.path.append(path) # 将路径添加列表即可
#以下代码往被导入的文件里放
#Name 和 main 是做测试使用的
#__name__代表模块的名字
#__main__当模块直接运行时的文件名
#当文件被导入时,if判断返回false
if __name__=="__main__":
print("in main")
print(sys.argv)