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-文件操作的主要内容,如果未能解决你的问题,请参考以下文章

学习笔记:python3,代码片段(2017)

常用python日期日志获取内容循环的代码片段

VSCode自定义代码片段——git命令操作一个完整流程

使用 Python 代码片段编写 LaTeX 文档

VSCode自定义代码片段15——git命令操作一个完整流程

VSCode自定义代码片段15——git命令操作一个完整流程