python中打开文件,可以使用open()函数,可以打开一个已经存在的文件,或者创建一个新的文件。
open(文件名,访问模式,encoding = “utf-8”)
file=open("test.txt","w",encoding=”utf-8”)
file.write("哈哈哈")
file.close()
# w,只写入.如果文件不存在就创建,如果存在就覆盖
# 文件操作:I\O Input:输入--->读取内容 Output:输出--->写出内容
# 创建文件,指定文件名称,指定mode(模式)为M,如果文件不存在就创建,如果存在就覆盖
stream = open(file='b.txt', mode='w', encoding='UTF-8')
# 网文本中写入内容
stream.write('鹅鹅鹅...')
# 将文件流关闭
stream.close()
# 中文显示,pycharm默认打开的方式UTF-8 乱码,GBK打开的时候可以显示
# r,只读,如果文件不存在就报错
open(file='xxx.txt', mode='r', encoding='UTF-8') # [Errno 2] No such file or directory: 'xxx.txt'
# 文件的访问模式
# 文件形式:
# 文本文件---字符读写
# 字节文件---字节读写(图片,mp3)
# =====================================================================================================
# w,只写入.如果文件不存在就创建,如果存在就覆盖
# 文件操作:I\O Input:输入--->读取内容 Output:输出--->写出内容
# 创建文件,指定文件名称,指定mode(模式)为M,如果文件不存在就创建,如果存在就覆盖
stream = open(file='b.txt', mode='w', encoding='UTF-8')
# 网文本中写入内容
stream.write('鹅鹅鹅...')
# 将文件流关闭
stream.close()
# 中文显示,pycharm默认打开的方式UTF-8 乱码,GBK打开的时候可以显示
# ----------------------------------------------------------------------------------------------------
# r,只读,如果文件不存在就报错
# open(file='xxx.txt', mode='r', encoding='UTF-8') # [Errno 2] No such file or directory: 'xxx.txt'
# ----------------------------------------------------------------------------------------------------
# a追加,如果文件不存在就创建文件,如果存在,追加内容
s = open(file='c.txt', mode='a', encoding='UTF-8')
s.write('哈哈哈')
s.close()
# =====================================================================================================
# r+,读写,如果文件不存在就报错
r = open(file='c.txt', mode='r+', encoding='UTF-8')
r.write('aaaaaa')
print(r.read())
r.close()
# ----------------------------------------------------------------------------------------------------
# w+,读写,如果文件不存在就创建,如果存在就覆盖
# a+,读和追加,如果文件不存在就创建文件,如果存在就追加内容
# =====================================================================================================
# 以下针对的文件是:字节形式文件,以二进制形式进行读写(byte=8bit)
# 任何模式的文件都支持
# rb,只读,如果文件不存在就报错
# wb,只写,如果文件不存在就创建文件,如果存在就覆盖
# ab,追加,如果文件不存在就创建文件,如果存在就覆盖
# rb+,读写,如果文件不存在就报错
# wb+,读写,如果文件不存在就创建,如果存在就覆盖
# ab+,读和追加,如果文件不存在就创建文件,如果存在就追加内容
# for循环写入100条数据到文件中
s = open(file='for循环写入内容.txt', mode='w', encoding='UTF-8') # 创建一个名为'for循环写入内容的txt文件,模式为写入,编码方式为UTF-8'
for i in range(1, 101): # 循环100次
s.write(f'第{i}条数据\n') # 写入循环次数
s.close() # 关闭文件
# ---------------------------------------------------------------------------
# 读取文件内容
# read:读取所有内容
s = open(file='for循环写入内容.txt', mode='r', encoding='UTF-8')
# -----------------------------------------------
# str = s.read() # 读取s中的内容,命名为str
# print(str)
# -----------------------
# print(s.read(4)) # 括号中的数字表示输出多条内容
# -----------------------
# print(s.readline()) # 读取一行数据
# print(s.readline()) # 读取第二行数据
# -----------------------
# print(s.readline(2)) # 获取某一行的字符个数
# -----------------------
# for line in s.readlines(): # 遍历所有行的数据
# print(line,end='') # 输出数据,将换行符换为空
# -----------------------
lines = s.readlines() # 读出所有的行---读一次就是所有内容,后续只需要从读取中的字符串lines中提取数据就可以.如果继续读就没有内容了
print(lines[98]) # 打印索引为98的行的数据
print(lines[0]) # 打印索引为0的行的数据
# -----------------------------------------------
s.close() # 关闭文件
# 备份文本文件
# s 源文件
s = open('a.txt', 'r+', encoding='UTF-8')
# s1 目标文件
s1 = open('my.txt', 'w', encoding='UTF-8')
# 备份操作
for line in s.readlines():
s1.write(line)
# 释放文件资源
s.close()
s1.close()
# =======================================================================================
# 图片文件
s2 = open(file='C:\\Users\\76516\Pictures\\Saved Pictures\\扇巴掌.gif', mode='rb')
s3 = open(file='img\\xxx.gif', mode='wb')
# 读取所有内容
stream = s2.read()
# 写入内容
s3.write(stream)
# 释放文件资源
s2.close()
s3.close()
s = open('a.txt', 'r', encoding='UTF-8')
print(s.read(2)) # 鹅鹅
# 获取当前读的位置
print(s.tell()) # 6
print(s.read(2)) # 鹅.
print(s.tell()) # 10
# 跳跃到指定位置
s.seek(3) # 跳跃到第三个字符
print(s.tell()) # 3
print(s.read(3))
s = open('user.txt', 'w', encoding='UTF-8')
# 录入数据
for i in range(1, 4):
print(f'请输入第{i}个学生信息')
name = input('请输入姓名:\n')
age = input('请输入年龄:\n')
gender = input('请输入性别:\n')
str = name + ';' + age + ';' + gender
s.write(str + '\n')
# 关闭文件流
s.close()
# 结果:
# 创建一个user.txt文件,写入了
# 张三;18;男
# 李四;19;男
# 王五;17;女
import os
# 文件重命名
# os.rename(src='a.txt', dst='a.log')
# -----------------------------------------
# 删除文件
# os.remove('a.log')
# -----------------------------------------
# 创建文件夹
# os.mkdir('aa')
# os.mkdir('aa\cc')
# -----------------------------------------
# 获取当前目录
print(os.getcwd()) # D:\Program Files\Pycharm\Pycharm Projects\pythonProject\HELLO WORD\09.文件操作
# -----------------------------------------
# 列出当前文件夹所有文件
print(os.listdir())
# 列出桌面所有内容
print(os.listdir('C:\\Users\\76516\\Desktop'))
# -----------------------------------------
# 删除空文件夹
# os.rmdir('aa\\cc')
os.rmdir('aa')
# 删除文件夹内所有jpg文件
import os
def deleteJpg(path):
# 列出所有文件和文件夹
dirs = os.listdir(path)
print(dirs)
# 进入文件夹,判断文件是否是.jpg结尾,是就删除;判断是否是文件夹,如果存在打开查看是否有.jpg文件
for d in dirs:
if os.path.isfile(path + '\\' + d): # 判断是否是文件
if d.endswith('.jpg'): # 如果是.jpg文件
# 删除这个文件
os.remove(path + '\\' + d)
# 如果是文件夹,进入
else:
deleteJpg(path + '\\' + d) # 自身调用
# 调用函数
deleteJpg('根路径')
# 创建一个文件夹,然后键盘录入学生信息,以字典的形式保存到文件中
import os
import json
# 判断文件是否存在 os.path.exists()
if not os.path.exists('test'):
# 如果不存在就创建文件夹
os.mkdir('test') # 当文件存在时无法创建该文件
# 写到文件中
s = open(file='test//student.txt', mode='w', encoding='UTF-8')
list = []
for i in range(1, 3):
print(f'请输入第{i}个学生信息')
dict = {}
dict['username'] = input('请输入学生姓名:\n')
dict['age'] = input('请输入学生年龄:\n')
dict['gender'] = input('请输入学生性别:\n')
list.append(dict)
# 将列表类型转换为字符串进行输出.真正转换不能直接使用str(),应该使用json.dumps()将列表(字典)转化为字符串
s.write(json.dumps(list))
s.close()
读取如上文件,并将数据封装成字典的形式,并遍历文件信息
# 读取如上文件,并将数据封装成字典的形式,并遍历文件信息
import json
s = open(file='test//student.txt', mode='r', encoding='UTF-8')
str = s.read()
print(str, type(str)) # [{'username': '张三', 'age': '18', 'gender': '男'}, {'username': '李四', 'age': '17', 'gender': '女'}] <class 'str'>
# 将字符串转换为列表形式
list = json.loads(str)
for i in list:
print(i['username'], i['age'], i['gender'])
s.close()
# json.loads() 将字符串转换成字典(列表)形式
# json.dumps() 将字典列表转换成字符串格式
dict = {'username': 'zhangsan', 'password': '123', 'hobby': None}
# 转换成字符串格式
a = json.dumps(dict)
print(a) # {"username": "zhangsan", "password": "123", "hobby": null} 其中null为通用格式
# 将字符串转化为字典形式
b = json.loads(a)
print(b) # {'username': 'zhangsan', 'password': '123', 'hobby': None}