赞
踩
ptyhon内置了文件对象,使用文件对象时,可以用内置open()方法创建一个文件对象,然后对文件象进行一些基本的操作。
file = open(filename, mode='w', buffering=None, encoding=None)
# 参数说明
# file : 创建的文件对象
# filename : 要创建或者打开的文件名,需要以引号(单双都行,必须是英文的,还要加后缀)括起来,如打开或创建"name.txt"文件
# mode : 用于打开文件的模式,如 'w'是写入
# buffering : 用于指定读写文件的缓冲模式,默认为缓冲模式,
# buffering = False 表示不缓冲
# buffering = 数字(大于1) 表示缓冲大小
# encoding : 默认GBK编码打开文件,如果文件不是GBK编码会报错
# 大家可以指定编码打开文件 一般是常用'utf-8'编码
在这里插入代码片# 以写入模式创建文件对象,编码为utf-8
file = open('student.txt',mode='w',encoding='utf-8')
# 在创建或者打开一个文件后,一定要记着关闭,避免对文件数据造成损失
# 关闭文件可用close()
file.close()
# 方法使用 file = open('student.txt',mode='w',encoding='utf-8') file.write(string) # string : 要写入的数据 data = '人生苦短,我学python' file = open('data.txt',mode = 'w', encoding = 'utf-8') file.write(data) file.close() # 一定要注意!!! # 写入文件后一定要用close()方法关闭,否则写入的内容会缺失 # 因为写入的内容会先进入缓存区,并没有直接写入,只有调用close()时才能保证内容全部写入 # 如果不想立马关闭文件,也可以用flush()方法把内容写入 # file.flush()
# 方法使用 file.read(size) # size : 读取的字符个数,如果省略则读取所有 # 读取上面写入的内容 file = open('data.txt', mode='r', encoding='utf-8') print(file.read(5)) # 人生苦短, # 把剩下的内容读取完 print(file.read()) # 我学python file.close() # file.seek(offset) # offset : 用于指定移动的字符数 跟read()有所不同,utf-8编码中汉字占三个字符,GBK编码汉字占(包括中文标点符号)2 # 个字符,无论采用何种编码英文字母和数字都是按一个字符计算。 file = open('data.txt', mode='r', encoding='utf-8') file.seek(15) # 人生苦短, print(file.read(3)) # 我学p file.close() # file.readline() 读取一行 file = open('data.txt', mode='r', encoding='utf-8') file.readline() # 人生苦短,我学python file.close() # file.realines() 读取全部行 跟read()差不多,但可以遍历 data = '人生苦短,我学python\n人生苦短,我学python' file = open('data.txt', mode='w', encoding='utf-8') file.write(data) # 可以遍历 file = open('data.txt', mode='r', encoding='utf-8') for i in file.readlines(): print(i) file.close()
有时候,我们打开文件后,可能会忘记关闭,这样可能会造成我们数据缺失以及安全问题。为了避免此类问题的发生,可以用python提供的with语句,上下文管理器,无论是否出现异常,都会关闭已经打开的文件。
# with open(file_name,mode,encoding) as f: # f.write(string) # 执行读写的操作 # 其实没有什么变化 只增加了一个自动打开和关闭文件的操作 # as 表示重命名 data = '人生苦短,我学python' # 写入数据 with open('data.txt', mode='w', encoding='utf-8') as g: g.write(data) # 读取数据 with open('data.txt', mode='r', encoding='utf-8') as f: print(f.read()) # 追加数据 with open('data.txt', mode='a', encoding='utf-8') as n: n.write(data)
在这里提醒大家一定要注意文件打开的模式!!!
mode的模式注意!!!
r 读取文件,文件必须存在,否则会报错
a 往内容后面追加新内容 文件存在就添加 不存在就创建文件再添加
w 写入内容 如果文件存在,文件里有内容,原来的内容会被新内容覆盖, 不存在就创建文件再写入
在介绍os模块操作之前,先讲一下文件路径,什么是路径呢?
在电脑中,我们的文件会储存再磁盘中,如D:\Typora\resources\appsrc\editor,就是一个文件的储存路径,常用斜杠“\”分隔每一个区间,斜杠后面是前面的子项。
with open(r'total\student.txt',mode='w',encoding='utf-8') as f:
f.write(data)
在python中,用内置模块os以及子模块os.path用于对目录和文件进行操作,在使用os模块记得用import导入。
import os
# mkdir(name) name为要创建的文件名
# 文件存在就会报错
os.mkdir('name')
import os
# makedirs(path1\path2......) 要\\ 或者字符串前面加r
os.makedirs(r'name\name1\name2')
os.makedirs('names\\names1\\names2')
import os.path
# os.path.join(name1,name2...) 如果有多个盘符开头的路径 以最后的为准
# 拼接不会检查路径是否有效
name1 = 'D:\\Users\\wo\\top'
name2 = 'names'
print(os.path.join(name1, name2))
# D:\Users\wo\top\names
name3 = 'C:\\u'
name4 = 'name2'
print(os.path.join(name1, name2, name3, name4))
# C:\u\name2
import os
# getcwd()返回当前文件的绝对路径
print(os.getcwd())
import os.path
# os.path.abspath(name) name 获取的文件名
print(os.path.abspath('names'))
# C:\Users\政\Desktop\文件夹操作\names
import os.path
# os.path.isdir(name) name为文件名 相对与绝对路径都行
print(os.path.isdir('names'))
# os.path.isfile(name) name为文件名 相对与绝对路径都行
print(os.path.isfile('data.txt'))
import os.path
# 先创建目录
os.mkdir('name')
# 判断目录或文件是否存在 存在返回True 不存在返回False
# 相对与绝对路径都可以
print(os.path.exists('name'))
import os
# 获取当前目录的路径
file_add = os.getcwd()
# os.listdir(path)
# 获取指定目录下的所有文件
print(os.listdir(file_add))
import os
# 先创建目录
os.mkdir('name')
os.makedirs('name1\\name2\\name3')
# 再删除目录
# os.rmdir(name) name为目录名
os.rmdir('name')
# 删除多级目录
# os.removedirs(path1\path2......)
os.removedirs('name1\\name2\\name3')
import os
# 创建目录
os.mkdir('name')
# 在目录name中创建文件name1
with open('name\\name1', mode='w') as f:
f.write('a') # 写入字符串'a'
# os.rename(str,dst) str要重命名的文件 dst要命名的文件名字
# 重命名目录
os.rename('name', 'student')
os.rename('student\\name1', 'student1')
import os # 创建一个根目录 os.mkdir('a') # 在根目录创建3个在目录 for i in range(3): os.mkdir(f'a\\name{i}') # 在每一个子目录创建3个文件 for k in range(0, 3): with open(f'a\\name{i}\\' + f'age{k}.txt', mode='w') as f: f.write('') # os.path.walk(top,topdown) # top 指定遍历的目录 # topdown 用与指定遍历的顺序,如果值为True 则优先遍历根目录(自上而下) # 如果值为False,先从最后一级目录开始(自下而上) 默认为True for g in os.walk('a'): print('路径:', g[0]) print('目录名:', g[1]) print('文件名:', g[2])
import os.path
# os.path.splitext() 分离文件名与扩展名
name = 'file.txt'
print(os.path.splitext(name))
import os.path
# os.path.basename(path) path 为目录路径
name = 'name\\file.txt'
print(os.path.basename(name))
import os.path
# os.path.dirname(path) path 为目录路径
name = 'name\\file.txt'
print(os.path.dirname(name))
本文写了用python中的内置函数open创建读写文件和用内置模块os来创建文件、目录和对文件、目录的一些基本操作以及用with自动打开关闭文件。在平常的练习中大家可以多多练习,不一定要把这些方法都记下来,多查多练,自然而然都记住了。文章如有错误,请指正,最后谢谢大家!
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。