python-文件操作
Posted 274831730wang
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python-文件操作相关的知识,希望对你有一定的参考价值。
# r: read 只读 f = open("alex和wusir的故事", mode="r", encoding="utf-8") # 读取内容 content = f.read() # 全部都读取出来 print(content) # 坑: c2 = f.read() # 读取不到内容. 因为上面已经读取完毕. 光标在末尾 print("c2", c2) # 良好的习惯 f.close() # 关闭连接
# 文件路径: # 1. 相对路径: 相对于当前程序所在的文件夹, 如果再文件夹内. 随便找. 直接写名字 # 如果不在这个文件夹内. 可能需要出文件夹或者进文件夹 # 出文件夹 ../ # 进文件夹 文件夹/ # 2. 绝对路径: 从磁盘根目录寻找路径 (有问题) # 只有在记录日志的时候可以用到绝对路径 # 日志: 程序运行过程中记录的信息. # ‘utf-8‘ codec can‘t decode byte 0xbd in position 0: invalid start byte f = open("E:西游记金角大王吧.txt", mode="r", encoding="gbk") print(f.read()) f.close()
f = open("小护士模特主妇萝莉.txt", mode="r", encoding="utf-8") # print(f.read(5)) # 读取5个字符 # print(f.read(5)) # 继续读5个 # # print(f.readline().strip()) # 换行符为分割, strip()可以去掉换行. 读取到的内容第一件事就是去掉空白 # print(f.readline()) # 换行符为分割 # # f.close() # # print("周润发", end="胡辣汤") # print("周星驰") # print(f.readlines()) # 一次性把文件中的内容读取到列表中. # print("你叫什么名字? 我叫李嘉诚. 可能") # 换行 # print("你叫什么名字?\n 我叫李嘉诚. 可能") # 显示 # print("你叫什么名字?\\n 我叫李嘉诚. 可能") # 显示 \n # 文件句柄是一个可迭代对象 # 优点: 相对来说节省内存, 操作相对简单 for line in f: # 从文件中读取到每一行给前面的line print(line.strip()) f.close()
# 每次用w模式打开文件, 都会清空这个文件(坑) f = open(‘胡辣汤‘, mode="w", encoding="utf-8") # 可以帮我们创建文件 # f.write(‘河南特色 ‘) # f.write("东北特色 ") # f.write(‘陕西特色 ‘) # 好习惯 f.flush() # 刷新管道, 把数据写入文件 f.close()
f = open("葫芦小金刚", mode="a", encoding="utf-8") # a, append 追加, 在文件的末尾写入内容 # f.write("你叫什么名字啊?") # f.read() # not readable f.flush() f.close()
# f = open("葫芦小金刚", mode="r+", encoding="utf-8") # content = f.read(2) # 顺序必须先读, 后写 # # r+特有的深坑:不论读取内容的多少. 只要你读了. 写就是在末尾 # f.write(‘五娃‘) # print(content) # 一上来会清空文件. 没人用 # f = open("葫芦小金刚", mode="w+", encoding="utf-8") # # content = f.read(2) # 顺序必须先读, 后写 # # # r+特有的深坑:不论读取内容的多少. 只要你读了. 写就是在末尾 # # f.write(‘五娃‘) # f.write("又能吐火的, 有能吐水的.") # # 移动光标 # f.seek(0) # 移动到开头 # s = f.read() # print("=========>", s) # 追加写读, 光标在末尾. 所有的写都是在末尾 # f = open("葫芦小金刚", mode="a+", encoding="utf-8") # f.write("机器葫芦娃召唤神龙, 高喊.我代表月亮消灭你!") # f.seek(0) # s = f.read() # print("=========>", s)
f1 = open("c:/huyifei.jpg", mode="rb") f2 = open("d:/huerfei.jpg", mode="wb") for line in f1: # line是从f1中读取的内容 f2.write(line) # 把读取的内容原封不动的写出去 f1.close() f2.flush() f2.close()
f = open("胡辣汤", mode="r+", encoding="utf-8") # f.seek(0,2) # 移动到末尾 # content = f.read(5) # print(content) # f.seek(0) # 移动到开头 # print(f.read()) # print(f.tell()) # 字节 f.seek(3) print(f.read())
# 需求: 把好人换成sb # 必须: # 1. 先从文件中读取内容 # 2. 把要修改的内容进行修改 # 3. 把修改好的内容写人一个新文件 # 4. 删除掉原来的文件 # 5. 把新文件重命名成原来的文件的名字 # 导入os模块 os表示操作系统 import os # f = open("夸一夸alex", mode="r", encoding="utf-8") # f2 = open("夸一夸alex_副本", mode="w", encoding="utf-8") # with会自动的帮我们关闭文件的链接 with open("夸一夸alex", mode="r", encoding="utf-8") as f, open("夸一夸alex_副本", mode="w", encoding="utf-8") as f2: for line in f: if "好人" in line: line = line.replace("好人", "sb") f2.write(line) # time.sleep(3) # 程序暂停3秒 # 删除原来文件 os.remove("夸一夸alex") # 重命名副本为原来的文件名 os.rename("夸一夸alex_副本", "夸一夸alex")
# f = open("水果.txt", mode="r", encoding="utf-8") # # lst = [] # for line in f: # 1,香蕉,1.85,50 # dic = {} # 每行都是一个字典 # line = line.strip() # 去掉空白 1,香蕉,1.85,50 # a, b, c, d = line.split(",") # [1, 香蕉, 1.85, 50] # dic[‘id‘] = a # dic[‘name‘] = b # dic[‘price‘] = c # dic[‘totle‘] = d # lst.append(dic) # # print(lst) # # f = open("水果.txt", mode="r", encoding="utf-8") # line = f.readline().strip() # 第一行内容, 编号,名称,价格,数量,哈哈 # h,i,j,k = line.split(",") # lst = [] # for line in f: # 1,香蕉,1.85,50 # dic = {} # 每行都是一个字典 # line = line.strip() # 去掉空白 1,香蕉,1.85,50 # a, b, c, d = line.split(",") # [1, 香蕉, 1.85, 50] # dic[h] = a # dic[i] = b # dic[j] = c # dic[k] = d # lst.append(dic) # # print(lst) f = open("水果.txt", mode="r", encoding="utf-8") line = f.readline().strip() # 第一行内容, 编号,名称,价格,数量,哈哈 title = line.split(",") # [编号,名称,价格,数量,哈哈] lst = [] i = 0 for line in f: # 1,香蕉,1.85,50 dic = {} # 每行都是一个字典 line = line.strip() # 去掉空白 1,香蕉,1.85,50 data = line.split(",") # [1, 香蕉, 1.85, 50] for i in range(len(title)): dic[title[i]] = data[i] lst.append(dic) print(lst)
以上是关于python-文件操作的主要内容,如果未能解决你的问题,请参考以下文章