Python 文件

1. 文件操作

对文件操作流程:
  • 打开问价,得到文件句柄并赋值给一个变量
  • 通过句柄对文件进行操作
  • 关闭文件

1.1 打开模式

w   write 写入模式      
    文件不存在则创建文件,存在的话则打开清空内容,并且将文件指针放在文件的开头

r   read  读取模式
    文件不存在则报错! 存在的话则打开文件,并且将文件指针放在文件的开头

a   append 追加模式
    文件不存在则创建文件,存在的话则打开文件,*并且将文件指针放在文件的末尾*

x   xor 异或模式
    文件已存在则报错! 不存在的话则创建文件,将文件指针放在文件的开头

U  表示在读取时,可以将 \r \n \r\n自动转换成 \n (与 r 或 r+ 模式同使用)
    rU
    r+U

b  bytes模式,表示处理二进制文件(如:FTP发送上传ISO镜像文件,linux可忽略,windows处理二进制文件时需标注)

#扩展模式 (配合打开模式的辅助模式,自己单独不能使用)
    +   plus   增强模式(可以让文件具有读写功

 

组合使用:

rb  # 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+  # 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+  # 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。

wb  # 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+  # 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+  # 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。

ab  # 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+  # 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+  # 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

  

2. 语法

fp = open("文件名",mode="a+",encoding="utf-8")      # 需要手动关闭文件
或
with open("文件名",mode="a+",encoding="utf-8") as fp:  # 自动关闭文件

 

3.  相关操作

f = open("test.txt",mode="r+",encoding="utf-8")
f.read()     # 读取字符的个数(里面的参数代表字符个数)
f.tell()     # 把现在的文件句柄所在的指针打印出来。(返回字节数)
f.flush()    # 强制刷新
f.seek(0)    # 调整指针的位置(里面的参数代表字节个数)
print(f.encoding) # 打印文件编码
print(f.fileno)   # 返回文件句柄在内存中的编号
f.name()       # 打印名字
f.isatty()     # 是不是终端设备
f.readable     # 判断文件是否可读
f.writable     # 判断文件是否可写
f.truncate()   # 把要截取的字符串提取出来,然后清空内容将提取的字符串重新写入文件中 (字节)
f.readline()   # 读取一行文件内容
f.readlines()  # 将文件中的内容按照换行读取到列表当中
f.writelines() # 将内容是字符串的可迭代性数据写入文件中 参数:内容为字符串类型的可迭代数据
f.close()      # 关闭文件 

 

4. 例子

4.1 修改原文件方式

def alter(file,old_str,new_str):
    """
    替换文件中的字符串
    :param file:文件名
    :param old_str:就字符串
    :param new_str:新字符串
    :return:
   不建议使用,文件小可以使用
""" file_data = "" with open(file, "r", encoding="utf-8") as f: for line in f: if old_str in line: line = line.replace(old_str,new_str) file_data += line with open(file,"w",encoding="utf-8") as f: f.write(file_data) alter("file1", "09876", "python")

 

4.2 把原文件写到新文件里

4.2.1 字符串替换

import os
def alter(file,old_str,new_str):
    """
    将替换的字符串写到一个新的文件中,然后将原文件删除,新文件改为原来文件的名字
    :param file: 文件路径
    :param old_str: 需要替换的字符串
    :param new_str: 替换的字符串
    :return: None
    """
    with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
        for line in f1:
            if old_str in line:
                line = line.replace(old_str, new_str)
            f2.write(line)
    os.remove(file)
    os.rename("%s.bak" % file, file)

alter("file1", "python", "测试")

4.2.2 正则替换

import re,os
def alter(file,old_str,new_str):

    with open(file, "r", encoding="utf-8") as f1,open("%s.bak" % file, "w", encoding="utf-8") as f2:
        for line in f1:
            f2.write(re.sub(old_str,new_str,line))
    os.remove(file)
    os.rename("%s.bak" % file, file)
alter("file1", "admin", "password")

 

posted @ 2023-05-23 11:50  Crazy丶迷恋  阅读(37)  评论(0编辑  收藏  举报