赞
踩
- # -*- coding:utf8 -*-
- """
- # editor: hjjdreamer
- # create-time: 2023/4/13-7:04
- # Python-Script: 30_files_py.py
- # describe:
- Python 需要经过文件管家的一个介质进行系统中文件的读取
- Python --> 文件管家的媒介 --> 系统文件
- mode:
- r == 读取,不存在文件则报错
- a == 追加内容
- w == 覆盖写入
- b == 二进制模式打开(图片 + 视频)
- """
-
- """
- open 读取文件(打开)
- """
- # 读取文件(打开)
- # open(文件的路径, mode="<打开方式: r读取 + w覆盖写入 + a追加>")
- # file_object 相当于媒介一个文件管家
- fr = open(r"./demo.log", mode="r")
-
- # 文件操作
- """
- read() 查看文件的功能
- 按字符,文件指针从头读到尾
- """
- # 读取文件中前5个字符并输出
- print(fr.read(5))
-
- # 不会从头接着读,而是接着往后读取
- print(fr.read(3))
-
- # 文件指针标记文件从哪个位置开始读取数据
- # fr.read() 读取所有内容(当前指针位置到文件末尾)
- print(fr.read())
-
- # 关闭资源
- fr.close()
-
- """
- # readline()按行读取文件
- """
- # 打开文件:
- frl = open(r"./myapp.log", mode="r")
- # 按行读取文件
- print(frl.readline()) # 读取第一行数据
- # 文件中有换行符(\n) + print默认也是换行符
- print(frl.readline(), end="") # 读取第二行数据
- # 修改print的默认换行符
- print(frl.readline(), end="")
- # 关闭文件
- frl.close()
-
- """
- readlines()
- 读取所有(剩余)行然后把他们作为一个 “字符串列表” 返回
- 和 while, for 循环结合使用
- 按行,文件指针从头读到尾
- """
- # 打开文件
- fr1 = open(r"./myapp.log", mode="r")
- data1 = fr1.readlines()
- print(f"{data1}")
- print(f"{data1[0]}")
- print(f"{data1[2]}")
-
- # 和 split()结合
- print(f"{data1[1].split(':')[0]}")
- print(f"{data1[1].split(':')[2]}")
-
- # 和 for 循环
- for item in data1:
- print("===")
- print(f"num: {item}", end="")
- print("-=-=-=-")
- print("num: ", item, end="")
- print("----")
- print(f"{fr1.readlines()}")
-
-
- # 关闭文件
- fr1.close()
-
-
- """
- 大批量数据的读取方法
- """
- # 打开文件
- frm = open(r"./addDemo.log", mode="r")
- # 读取文件 == while True
-
- """
- 123
- 456
- "\n" ==> 换行符,不会终止循环 ==> len("\n")=1
- 789
- """
- while True:
- # 一行一行接受数据
- data = frm.readline()
- # 表示读取那一行为空字符,则标记着文件读取完成
- # len() 返回字符串的长度
- if len(data) == 0: # 表示文件读取完毕
- break # 退出循环
- # 输出行
- print(f"data = {data}")
-
- # 关闭资源
- frm.close()
-
- """
- 数据的写入
- write
- writelines
- """
- # 打开文件
- fw = open(r"./write_file.txt", mode="w") # w: write 写入
-
- # 文件写入,字符串写入,覆盖写入
- fw.write("hello benben~~\n")
- fw.write("you are my baby boy~ ~\n")
-
- # 关闭资源
- fw.close()
-
- """
- 写入操作按列
- """
- # 列表写入 + 换行符要写,否则会写成一行
- list01 = ["hello\n", "world\n", "hehe\n"]
- # 打开文件
- fwl = open("./writelines_file.txt", mode="w")
- # 写入文件,覆盖写入
- fwl.writelines(list01)
- # 保存
- fwl.close()
-
- """
- 案例
- mode="rb"
- mode="ab"
- """
-
- # 同时打开2个文件系统
- fr1 = open(r"./write_file.txt", mode="rb")
- fw1 = open(r"./writelines_file.txt", mode="ab")
- # 循环判断写入,按字节模式而不是内容
- while True:
- data = fr1.read(4096) # 4KB为一次写入
- # 读取完成的判断
- if len(data) == 0: # 文件读取完毕
- break # 退出循环
- # 写入数据
- fw1.write(data)
- fw1.close()
- fr1.close()
-
- # 文件简写
- """
- with 的简写 ==> 优化掉close()操作,简化了写法
- """
- # 打开的文件放到with语句中,代码结束后,文件将自动关闭
- with open(r"./writelines_file.txt", mode="ab") as fw2:
- with open(r"./write_file.txt", mode="rb") as fr2:
- while True:
- data2 = fr2.read(4096)
- if len(data2) == 0:
- break
- fw2.write(data2)
- # 与函数定义结合
- def copy1(from1, to1):
-
- print(f"from1 = {from1}")
- print(f"to1 = {to1}")
-
- with open(f"{to1}", mode="ab") as fw3:
- with open(f"{from1}", mode="rb") as fr3:
- while True:
- data3 = fr3.read(4096)
- if len(data3) == 0:
- break
- fw3.write(data3)
-
-
- copy1(f"./writelines_file.txt", f"./write_file.txt")
-
-
- import sys
- copy1(sys.argv[1], sys.argv[2]) # 调用函数+使用sys module 传递系统变量
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。