python基础-学习记录day13

127 阅读3分钟

文件操作

1、open()函数的使用

# open()  他是一个内置函数
# 1.w 我的文件如果说是不存在的情况下  会自动的进行创建
# f = open(r'D:\python_study\day14文件操作\text01.txt', mode='w', encoding='utf-8')
# print(f.writable())
# # print(f.write('你好哦呀\n'))  # 当我们是w模式下写入是会把之前的进行清空
# f.writelines('123\n456\n789')
# 2.a 追加模式  不存在创建
# f = open('test02.txt', mode='a', encoding='utf-8')
#
# print(f.writable())
# # print(f.write('123\n456\n789'))  # 返回的是长度
# print(f.write('\n我是谁'))  # 不会覆盖 而是会在后面进行继续写入
# 3.r 读取模式  不会主动的去创建文件夹
# f = open('test02.txt', mode='r', encoding='utf-8')
# print(f.readable())
# print(f.writable())

# print(f.read())  # 将所有的东西都读取出来
# print(f.readline(), end='@@')
# print(f.readline(), end='@@')
# print(f.readline())
# print(f.readlines())
# f = open('test02.txt', mode='r', encoding='utf-8')
# # 判断是否可读
# print(f.readable())
# # 逐行读取
# print(f.readline(), end='')
# # 读取所有 返回值为列表
# print(f.readlines())
# # 读取文件全部内容
# print(f.read())  # 指针已经读取到最后,所以往后读是没有内容的
# f = open("test02.txt", mode="r", encoding="utf-8")
'''
test02.txt的内容:
helloworld
你好
'''
# 汉字代表三个字节 换行代表两个字节  字母数字代表的是一个字节
# print(f.tell())
# print(f.readline(), end="")
# print(f.tell())
# print(f.readline())
# print(f.tell())
# 4.seek的使用
# f = open("test02.txt", mode="rb")
'''
helloworld
你好
'''
# 改变指针位置
"""
offset: 偏移量
whence: 0 从文件头开始  1 当前位置开始  2 文件尾
注意,当offset值非0时,Python要求文件必须要以二进制格式打开,
否则会抛出 io.UnsupportedOperation 错误。
"""
# print(f.tell())
# # 读取一个字节,文件指针自动后移1个数据
# print(f.read(1))
# print(f.tell())
# # 将文件指针从文件开头,向后移动到 5 个字符的位置
# f.seek(5)
# print(f.tell())
# print(f.read(1))
# 5.混合模式的使用
"""
r+(以读取为主)  打开一个文件用于读写。文件指针将会放在文件的开头。
w+(以写入为主)  打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a+(以写入为主)  打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
 """
# f = open('test02.txt', mode='r+', encoding='utf-8')
# print(f.writable())
# print(f.readable())

2、文件与文件夹操作

"""
模块    os 内置模块 内置库   专门用于处理文件的
导入的方式  import os

"""
import os

print(os.getcwd())
os.chdir('D:\python_study')  # \ 对特殊字符进行转义
print(os.getcwd())

os.makedirs('BBB\ccc')  # 以递归方式创建多个文件夹
os.rmdir('BBB\ccc')  # 删除单个空文件夹
os.removedirs('BBB\ccc')  # 以递归方式删除多个空文件夹

print(os.path.exists('BBB\ccc'))  # -->判断该路径下的文件或文件夹是否存在

os.mkdir('img')

3、批量重命名

import os

# 先切换路径
os.chdir('testasd')
print(os.getcwd())
# 遍历此路径下的文件
file_list = os.listdir(os.getcwd())
print(file_list)
for file in file_list:
    # 循环拼接
    new_name = "python_" + file
    # print(new_name)
    os.rename(file, new_name)

4、文件备份

old_name = input("请输入文件名:")  # text01.txt
index = old_name.rfind(".")
new_name = old_name[:index] + "备份" + old_name[index:]

# 老文件
old_f = open(old_name, "r")  # 读取
# 新文件
new_f = open(new_name, "w")  # 写入

cont = old_f.readlines()  # 老文件全部的进行读取
print(cont)
new_f.writelines(cont)  # 新文件全部写入

# 关闭文件
old_f.close()
new_f.close()

# """上下文管理器方法 不用我们手动的去关闭文件 会在运行完之后自动跟我们关闭"""
# f_ = open('test01.txt', mode='w', encoding='utf-8')  # mode 可以省略不写
# f_.close()
#
# """建议使用这种"""
# with open('test01.txt', mode='w', encoding='utf-8') as f:
#     f.writable()
#     f.write('asd')

5、练习:用python创建文件data.txt,共100行,每行循环存放一个1~100之间的整数。

import random

with open("data.txt", mode="w+", encoding="utf-8") as f1:  # 写入文件
    for i in range(1, 101):
        if i == 100:
            f1.writelines(str(random.randint(1, 100)))
        else:
            f1.writelines(str(random.randint(1, 100)) + '\n')

with open("data.txt", mode="r+", encoding="utf-8") as f2:  # 读取文件
    count = 0
    for i in f2.readlines():
        print(i.replace(i, i.strip("\n")), end=" ")
        count += 1
        if count % 25 == 0:
            print()

运行结果:

1685060594413.jpg 1685060602520.jpg