返回首页DA系统C#IDE文件同步服务屏保 今天是: 2026-05-05    "立夏"  夏季的第一个节气,表示盛夏时节的正式开始
开启辅助访问

登录  | 注册成为修仙之旅的少年~

游客您好!登录后享受更多精彩

QQ登录

只需一步,快速开始

查看: 647|回复: 0

[原创] 【原创】文件的操作讲解

[复制链接]
发表于 2025-4-21 12:21:29 | 显示全部楼层 |阅读模式

少侠不来段修仙之旅吗~

您需要 登录 才可以下载或查看,没有帐号?注册成为修仙之旅的少年~

x
# 文件的操作讲解

"""
open()打开函数
在Python,使用open函数,可以打开一个已经存在的文件,或者创建一个新的文件,语法如下:
open(name,mode,encoding=)
name: 是要打开的目标文件名的字符串(可以包含文件所在的具体路径)。
mode:设置打开文件的模式(访问模式):只读、写入、追加等。
    · r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
    · w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,原有内容会被删除。
        如果该文件不存在,创建新文件。
    · a 打开一个文件用于追加。如果该文件已存在,新的内容将会被写入到已有内容之后。
        如果该文件不存在,创建新文件进行写入。

encoding:编码格式(推荐使用UTF-8)

示例代码:
f = open("D:/a.txt",r,encoding="UTF-8")
# 注意:encoding的顺序不是第三位,所以不能用位置参数,需要用关键字参数直接指定
# 注意:此时接收open返回的"f"变量,数据类型是对象(文件对象),对象是Python中一种特殊的数据类型,拥有属性和方法
# 可以使用对象.属性或对象.方法对其进行访问

文件对象.read() 方法
语法:文件对象.read(num)
· num表示要从文件中读取的数据的长度(单位是字节),如果没有传入num,那么就表示读取文件中所有的数据。

文件对象.readlines() 方法
语法:文件对象.readlines()
· readlines可以按照行的方式把整个文件中的内容进行一次性读取,并且返回的是一个列表,其中每一行的数据为一个元素。

文件对象.readline() 方法
语法:文件对象.readline()
· readline可以一次读取一行内容。下一次可以调用下一行,按照这个原理,就可以使用for循环来读取

# 注意,当连续使用read和readlines方法时,下一个read会读取上一个read的结尾,如果上一个read已经读完了,下一个read则返回空!!

文件对象.write(字符串)
语法:文件对象.write(字符串)
· 文件的写操作,写完需要跟上  文件对象.flush()方法刷新保存至文件中。

注意:
· 文件对象.write 需要配合w模式使用,但是w模式使用时,将会清空之前文件的内容!!
· w模式下,如果指定的路径不存在文件,则会自动创建一个空文件
· 直接调用write,内容并未真正写入文件,而是会积攒在程序的内存中,称之为缓冲区。
· 当调用flush的时候,内容会真正写入文件
· 这样做是避免频繁的操作硬盘,导致效率下降(攒一堆,一次性写磁盘)
· 小知识:close方法时内置了flush()方法的,意思是,close关闭文件会帮你自动保存数据到文件中。

文件对象.close() 方法
语法:文件对象.close()
· 关闭文件对象
# 注意:最后通过close,关闭文件对象,也就是关闭对文件的占用
# 如果不调用close,同时程序没有停止运行,那么这个文件将一直被python程序占用!

with open语法
语法:with open(name,mode,encoding=) as f:
            f.readlines()

# 通过在with open的语句块中对文件进行操作。
# 可以在操作完成后自动关闭close文件,避免遗忘掉close方法!

# 追加a模式,文件不存在会创建文件!。
# 追加a模式,文件存在会在最后,追加写入文件
"""
# 使用open函数以只读模式打开文件
f=open("F:/MyFile.txt","r",encoding="UTF-8")

# 使用read方法读取文件内容
print(f"read方法读取到的文件内容是:{f.read(10)}")

# 使用readline方法读取文件内容
print(f"readline方法读取到的文件内容是:{f.readline()}")

# 使用readlines方法读取文件内容
list1 = f.readlines()

print(f"文件有{len(list1)}行")

# 使用for循环循环列表把文件内容都输出
for read_list1 in list1:
    print(read_list1)

# 关闭文件
f.close()

print("----------------------------------------------------------")

# 使用for循环,直接将open函数返回的文件对象传递进for循环中读取
for read_file in open("F:/MyFile.txt","r",encoding="UTF-8"):
    print(read_file)

print("----------------------------------------------------------")

# 使用with open方法读取文件,执行完成后自动close文件
# 文件小练习,通过读取文件,判断某个字符或者单词出现的次数
with open("F:/MyFile.txt","r",encoding="UTF-8") as f:
    count_num=0

    for i in f:
        print(i)
        list_cache = list(i)        # 顺便练习了下转列表方法。实际上字符串可以直接count统计。
        count_num = count_num + list_cache.count("的")

    print(f"的这个字符在这个文件出现了{count_num}次")

print("-------------------------------------------------------")

f = open("F:/MyFile.txt","w",encoding="UTF-8")

# 写入文件
f.write("""
storagePath-test\n
收到了卡刷卡\n
说的卡上;搭配【\n
考试倒计时\n
快递哦哦片\n
松开斗篷\n
打算即可打开\n
萨的健康拉屎都屁哦\n
斯卡的卡时间考虑\n
哦IO手\n
哦POI看到的就看到\n
你是我的谁\n
星露谷物语yyds""")

f.flush()


# 注意:因为现在打开的是写模式,如果需要读取则需要先关闭文件,再打开读取模式!
# 小知识:close方法时内置了flush()方法的,意思是,close关闭文件会帮你自动保存数据到文件中。
f.close()

with open("F:/MyFile.txt","r",encoding="UTF-8") as f:
    print(f.read())

f = open("F:/MyFile.txt","a",encoding="UTF-8")

# 通过追加模式追加文本内容
f.write("\n追加的内容!!!")



f.close()

with open("F:/MyFile.txt","r",encoding="UTF-8") as f:
    print(f.read())

print("-----------------------------------文件操作案例练习--------------")

# 快速备份文件案例
with open("F:/MyFile2.txt","r",encoding="UTF-8") as f:
    with open("F:/MyFile3.txt","w",encoding="UTF-8") as f_work:
        f_work.write(f.read())


# 判断每行的条件,做出是否写入操作
with open("F:/MyFile2.txt","r",encoding="UTF-8") as f_read:
    with open("F:/MyFile4.txt","a",encoding="UTF-8") as f_work1:
        for i in f_read:
            print(f"{i}:{i.count("正式")}")
            if (i.count("正式") > 0):
                f_work1.write(i)



*滑块验证:

本版积分规则

DA论坛飞机票来了~

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表