Método de operación de archivos Python (lectura y escritura de archivos, lectura y escritura aleatorias, codificación de archivos)

Inserte la descripción de la imagen aquí

def main():
    try:
        # 这里加不加r其实都一样,默认的就是r xxxx自己替换成你的文件名字
        file = open("E:\\xxxx", "r");
        print("文件名称:{}".format(file.name));
        print("文件是否已关闭:{}".format(file.closed));
        print("文件访问模式:{}".format(file.mode));
    except BaseException:
        pass;
    finally:
        file.close();
        print("调用close()关闭文件对象");

if __name__ == '__main__':
    main();

Inserte la descripción de la imagen aquí

def main():
    try:
        # w代表输出 文件不存在时,自动创建,创建成功之后写入数据
        file = open("E:\\test.txt", "w");
        file.write("奥特曼打小怪兽");
    except BaseException:
        pass;
    finally:
        file.close();

if __name__ == '__main__':
    main();

Usar con para realizar operaciones con archivos

def main():
    with open("E:\\test.txt","w") as file:
        file.write("黑猫警长抓小老鼠");

if __name__ == '__main__':
    main();

La a de la operación del archivo de prueba representa la adición de datos al archivo

def main():
    with open("E:\\test.txt","a") as file:
        for item in range(10):
            file.write("黑猫警长抓小老鼠\n");

if __name__ == '__main__':
    main();

Utilice r para leer el contenido del archivo

def main():
    # 使用r来读取数据
    with open("E:\\test.txt","r") as file:
        # 读取一行
        var = file.readline();
        # 当一行数据存在时
        while var:
            print(var,end="");
            # 继续读取下一行
            var = file.readline();

if __name__ == '__main__':
    main();

Utilice r para leer la versión optimizada del contenido del archivo

def main():
    # 使用r来读取数据
    with open("E:\\test.txt","r") as file:
        # 迭代文件对象
        for line in file:
            # 输出每行内容
            print(line);

if __name__ == '__main__':
    main();

Lectura aleatoria y
Inserte la descripción de la imagen aquí
salida del archivo de acuerdo con el formato.

#将文件按照既定格式进行输出
NAMES = ("zhangSan","liSi","wangWu");
AGES = (1,2,3);
def main():
    with open("E:\\test.txt","a") as file:
        for item in range(len(NAMES)):
            content = "{name:<10}{age:>4}\n".format(name = NAMES[item],age = AGES[item]);
            file.write(content);


if __name__ == '__main__':
    main();

Leer los datos de la ubicación especificada del archivo

def main():
    with open("E:\\test.txt",mode = "r") as file:
        # 忽略前15位的数据
        file.seek(15);
        print("【第二行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
        print("【第三行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));


if __name__ == '__main__':
    main();

Utilice buscar para reubicar el archivo

def main():
    with open("E:\\test.txt",mode = "r") as file:
        # 忽略前15位的数据
        file.seek(15);
        print("【第二行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
        file.seek(0);
        print("【第一行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));
        file.seek(30);
        print("【第三行数据】,当前位置:{},姓名:{},年龄:{}".format(file.tell(),file.read(10).strip(),int(file.read(5))));


if __name__ == '__main__':
    main();

Inserte la descripción de la imagen aquí
Ubique directamente los datos que desea leer para evitar gastos de rendimiento no válidos. La desventaja es que debe especificar el formato de archivo para analizar

# 姓名的内容长度为10
NAME_LENGTH = 10;
# 年龄的内容长度为10
READ_LENGTH = 5;
# 保存数据读取的行数
line_count = 0;

def get_age():
    # 当前的偏移量
    seek_offset = 0;
    with open("E:\\test.txt", mode="r") as file:
        # 持续进行内容的读取;
        while True:
            # 读取年龄的位置
            file.seek(seek_offset + NAME_LENGTH);
            # 读取数据长度
            data = file.read(READ_LENGTH);
            # 可以获取到data数据
            if data:
                # 引用全局变量
                global line_count;
                # 统计的行数追加1
                line_count +=1;
                # 修改读取偏移量
                seek_offset = file.tell();
                # 局部返回
                yield int(data);
            else:
                # 结束函数调用
                return;
def main():
    sum = 0;
    for age in get_age():
        sum +=age;
    print("一共读取了:{}条信息,用户平均年龄为:{}".format(line_count,sum/line_count));

if __name__ == '__main__':
    main();

codificación de archivos
Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

def main():
    message = "奥特曼-打小怪兽".encode("GBK");
    print("编码后的数据类型为:{}".format(type(message)));
    # 输出为二进制数组
    print(message);


if __name__ == '__main__':
    main();
def main():
    message = "奥特曼-打小怪兽".encode("GBK");
    print("编码后的数据类型为:{}".format(type(message)));
    # 输出为二进制数组
    print(message);
    # 进行解码
    print(message.decode("GBK"));


if __name__ == '__main__':
    main();

Ver el formato de codificación actual

# 这个组件需要下载,pip install chardet
import chardet
def main():
    message = "奥特曼-打小怪兽".encode();
    print(chardet.detect(message));


if __name__ == '__main__':
    main();

Archivos de salida en el formato especificado

def main():
    # w代表输出 文件不存在时,自动创建,创建成功之后写入数据
    with open("E:\\test2.txt", mode="w",encoding="UTF-8") as file:
        file.write("奥特曼打小怪兽");
if __name__ == '__main__':
    main();

Las capturas de pantalla y las fuentes de código del artículo son videos gratuitos de enseñanza de Python de csdn

Supongo que te gusta

Origin blog.csdn.net/weixin_44887276/article/details/114915950
Recomendado
Clasificación