首页 > 其他 > 详细

文件操作

时间:2020-06-29 15:36:56      阅读:47      评论:0      收藏:0      [点我收藏+]

  

文件操作

1.什么是文件

技术分享图片

 2.文件的作用

学习文件操作的目的:让程序中的数据能够永久储存,因为文件是以硬件为载体

数据永久储存的方式

  1.文件,适合储存少量数据,操作更加简单,性能没有数据库的读写性能高,适合少量数据储存

  2.数据库。适合存储大量数据,操作成本会增加,优势:读写性能极高,速度会更快

3.文件的读写

3.1文件操作模式

  1.r模式:以字符串方式读取文件中的数据

  2.w模式:以字符串方式写入文件中的数据

  3.a模式:以字符串方式往文件中追加写入数据

  4.rb模式:以字节(二进制)的方式读取文件中的数据

  5.wb模式:以字节(二进制)的方式写入文件中的数据

  6.ab模式:以字节(二进制)的方式读取文件中追加写入数据

 

 

3.2r模式

r模式: 以字符串的方式读取文件中的数据

文件操作的步骤

  1.打开文件指定文件的操作方式

    file = open(“1.txt”,"r",encoding = "utf-8)

  提示:在windows的python解释器下,打开的文件默认的是cp936,在mac和Linux的python解释器下,打开的文件默认的是utf-8

  2.读取文件中的数据

    content = file.read()

    print(content)

  3.关闭文件

    file.close()

  注意点:r模式打开文件时一定要保证文件存在

 

 

3.3w模式

w模式:以字符串的方式往文件中写入数据

打开指定文件的操作

  file =  open(‘2.txt‘,‘w‘,"endcoing =  utf-8")

写入数据到文件

  file.write("hello")

关闭文件

  file.close()

注意点:

  1.当文件不存在时,使用w模式会先创建一个孔得文件,然后再写入数据

  2.当文件存在时,使用w模式时,会把文件中的内容清空,然后再写入新的数据

 

 

3.4a模式

a模式: 以字符串的方式往文件末尾追加写入数据

1.打开文件制定稳健的操作模式

  file = open("3.txt","a","encoing = utf-8")

2.追加写入数据到文件

  file.write("hi‘)

3.关闭文件

  file.close()

注意点:

  1.当使用a模式打开文件的时候,如果文件不存在,会先创建一个文件,然后在追加写入数据

  2.当使用a模式打开文件时,如果文件存在,会在文件的末尾追加写入文件,之前的文件会保留。

 

 

3.5rb模式

学习rb模式的目的:
1. 想要借助网络把一个文件中的数据发生给另外一个程序的话,需要使用字节(二进制)的数据
2. 读取非文本文件,比如: 视频,图片,音频等文件需要使用rb模式读取数据
# 打开文件指定文件的操作模式
file = open("1.txt", "rb")
# 读取文件中的数据 data = file.read() print(data, type(data))
# 把字节数据进行解码转成字符串数据 result = data.decode("utf-8") print(result, type(result))
# 关闭文件 file.close() # 提示: 如果文件的操作模式里面包含b模式,则不需要在打开文件的时候指定encoding参数


3.6wb模式
wb模式: 以字节(二进制)方式往文件中写入数据
学习wb模式的使用场景:比如网络中接收的输入想要写入到文件,可以使用wb模式msg = "hello python, 你好!"# 把字符串进行编码转成字节数据, 这里好比模拟是从网络中接收到的字节数据
data = msg.encode("utf-8")
print(data, type(data))

# 把字节数据保存到文件里面
file = open("2.txt", "wb")
# 写入字节数据到文件 file.write(data)

file.close()

 

 

3.7ab模式

ab模式: 以字节(二进制)方式往文件末尾追加写入数据
ab模式表示往文件中追加写入字节数据,之前的历史数据会保留

# 打开文件指定文件的操作模式
file = open("3.txt", "ab")
msg = "嘻嘻"

# 把字符串进行编码转成字节数据
data = msg.encode("utf-8")

# 追加写入数据
file.write(data)

# 关闭文件
file.close()

 

3.8读取数据的其他方式——read模式
read方法
1. 不定长参数,表示读取文件中的所有数据
2. 指定数据长度,读取指定长度的数据
2.1 如果文件的操作模式是r模式,read(5) 表示这一次最多读取5个字符串长度的数据
2.1 如果文件的操作模式是rb模式,read(5) 表示这一次最多读取5个字节长度的数据
# ============================r 模式读取指定长度的数据 ===================
# file = open("1.txt", "r", encoding="utf-8")
# while True:
#     # 这里5表示最多读取5个字符串长度的数据
#     data = file.read(5)
#     if len(data) > 0:
#         print(data)
#     else:
#         print("数据读取完毕!")
#         break
# # data = file.read(3)
# # print(data)
# file.close()

# ============================rb 模式读取指定长度的数据 ===================
file = open("1.txt", "rb")
# 在utf-8编码格式化下,一个汉字占用3个字节,一个字母、数字、符号占用1个字节。
result = file.read(3)
print(result, type(result))
# 把字节数据解码成字符串 content = result.decode("utf-8") print(content, type(content)) file.close()

 

 

3.9读取数据的其他方式——读取一行数据

readline方法: 表示读取一行数据,默认从第一行开始读取
file = open("3.txt", "r", encoding="utf-8")
while True:
    # 读取一行数据
    row_data = file.readline().strip()  # 去重空白字符,包括(\n)
    # "嘻嘻\n"
    if len(row_data) > 0:
        print(row_data)
    else:
        break
    # print(type(row_data))

# 读取一行数据
# row_data = file.readline()
# print(row_data)
file.readline()

 

3.10读取数据的其他方式——读取所有行数据
readlines: 读取文件中的所有行数据
file = open("3.txt", "r", encoding="utf-8")
# 读取文件中的所有行数据
rows = file.readlines()
print(rows, type(rows))

new_list = [row.strip() for row in rows]
print(new_list)
# 遍历文件中的所有行数据
for row in new_list:
    print(row)

# 获取最后两行数据,可以使用切片
result = new_list[-2:]
print(result)

file.close()

 

3.11文件的拷贝
# 原文件名
src_file_name = "test.txt"

# 1. 根据原文件的名字生成拷贝后的文件名
file_name, point, end_str = src_file_name.rpartition(".")
dst_file_name = file_name + "[复件]" + point + end_str
print(dst_file_name)

# 2. 打开原文件指定文件操作模式(rb)
src_file = open(src_file_name, "rb")

# 3. 读取原文件中的数据
src_file_data = src_file.read()

# 4. 打开目标文件指定文件的操作模式(wb)
dst_file = open(dst_file_name, "wb")

# 5. 把原文件读取到的数据写入到目标文件
dst_file.write(src_file_data)

# 关闭文件
src_file.close()
dst_file.close()

 

3.12文件和文件夹的相关操作
import os

# 创建空的文件, 123.txt
# file = open("123.txt", "w")
# file.close()

# 对文件进行重命名操作
# os.rename("123.txt", "666.txt")

# 对文件进行删除操作
# os.remove("666.txt")

# 创建文件夹
# os.mkdir("AAA")

# 创建文件到指定目录
# file = open("AAA/123.txt", "w")
# file.close()


# os.remove("AAA/123.txt")

# file = open("AAA/123.txt", "w")
# file.close()

# file = open("AAA/333.txt", "w")
# file.close()

# 获取当前操作文件夹的路径
path = os.getcwd()
print("当前操作文件夹的路径是:", path)

# 切换操作文件夹的路径
os.chdir("AAA")

# 获取当前操作文件夹的路径
path = os.getcwd()
print("当前操作文件夹的路径是:", path)

# 获取指定文件夹下的所有文件名
file_names = os.listdir()  # 不指定路径,默认查看的是当前文件夹下的所有文件名
print(file_names)

# .. 表示上一级目录,. 表示当前目录
# result = os.listdir("..") # 获取指定文件夹下的所有文件名
# print(result)

# os.mkdir("BBB")
# 提示:只能删除空文件
# os.rmdir("BBB")
os.chdir("..")
# 获取当前操作文件夹的路径
path = os.getcwd()
print("当前操作文件夹的路径是:", path)
# 不能非空文件。
os.rmdir("AAA")
import shutil  # 文件及文件夹操作的高级模块
import os

# 删除非空文件夹, 能够把文件夹及文件夹里面的所有文件全部删除
# shutil.rmtree("AAA")

# 判断文件是否存在
result = os.path.exists("1.txt")
print(result)

result = os.path.exists("111.txt")
print(result)

result = os.path.exists("BBB/345.txt")
print(result)

if os.path.exists("BBB/345.txt"):
    print("文件存在,可以读取文件中的数据")
else:
    print("文件不存在!")

 

3.13批量修改文件名

import os


# 1. 切换到AAA目录
os.chdir("AAA")
path = os.getcwd()
print(path)
# 2. 获取AAA目录里面的所有文件名
file_name_list = os.listdir()
print(file_name_list)

# 3. 遍历每一个文件名,对每一个文件完成重命名操作
for file_name in file_name_list:
    # 生成重命名后的文件名
    new_file_name = "彬哥出品-" + file_name
    print(file_name, new_file_name)
    # 对每一个文件完成重命名操作
    os.rename(file_name, new_file_name)

 

 


 
 


 

 


 

 

 

 

 

 

 

 

 

 

 

文件操作

原文:https://www.cnblogs.com/xin-dong-2020/p/13195341.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!