【Python学习笔记:11】代码练习:文件操作

用户登录

题目

运行程序,提示用户登录或注册
选择注册,要求输入用户名和密码,返回注册提示信息
选择登录,要求输入用户名和密码,判断是否登录成功

分析

根据输入:1为注册,2为登录,其他为不合法输入
注册:记录数据存储格式用户名|密码,一个用户和密码占用一行,数据末尾换行
登录:读取每一行数据,通过|分割用户名和密码 与输入用户名和密码判等

代码实现

# 用户登录 with 语句版

flag = input('请选择注册(1)还是登录(2):')
success = False

# 注册
if flag == '1':
    user_name = input('请输入注册的用户名:')
    user_pwd = input('请输入注册的密码:')
    # 打开文件 存入数据
    with open('./data.txt', 'a+', encoding='utf-8') as file:
        file.write(user_name + '|' + user_pwd + '\n')
# 登录
elif flag == '2':
    user_name = input('请输入登录的用户名:')
    user_pwd = input('请输入登录的密码:')
    # 打开文件 读取数据
    with open('data.txt', 'r', encoding='utf-8') as file:
        lines = file.readlines()
        
    for line in lines:
        line = line.strip()
        infos = line.split('|')
        register_name = infos[0]
        register_pwd = infos[1]
        if register_name == user_name and register_pwd == user_pwd:
            success = True
            break
# 不合法输入
else:
    print('不合法输入')

if flag == '2':
    if success:
        print('登录成功')
    else:
        print('登录不成功')

注册功能

运行前
image.png

运行后
image.png

登录功能

登录成功
image.png

登录不成功
image.png

文本文件复制

题目

实现拷贝文本文件

分析

打开 源文件 和 目标文件
读取源文件数据,写入目标文件
关闭 源文件 和 目标文件

代码实现

# 文本文件复制

scr_file = open('user.txt', 'r', encoding='utf-8')
lines = scr_file.read()
print(lines)

target_file = open('user_bak.txt', 'w', encoding='utf-8')
target_file.write(lines)

scr_file.close()
target_file.close()

文本文件复制功能

运行前
image.png

运行后
image.png

任意文件复制

题目

无区分文件格式,实现文件复制

分析

所有文件都是二进制文件

代码实现

# 任意文件复制

with open('./Snow.jpg', 'rb') as scr_file:
    lines = scr_file.read()
    with open('./Snow_bak.jpg', 'wb') as target_file:
        target_file.write(lines)

任意文件复制功能

运行前
image.png

运行后
image.png

os操作

books 文件夹的目录示意图

在这里插入图片描述

代码

import os

# 获取目录列表 无法获取文件
# ['cat.bmp', 'food', 'IT', 'readme.txt']
# dirs = os.listdir('./books')
# print(dirs)

# ['breakfast', 'dinner', 'lunch']
# dirs = os.listdir('./books/food')
# print(dirs)

# NotADirectoryError: [WinError 267] 目录名称无效。: './books/readme.txt'
# dirs = os.listdir('./books/readme.txt')
# print(dirs)


# 文件重命名 文件夹不能用
# os.rename('./user_bak.txt', './user1.txt')
# os.rename('./user1.txt', './user_bak.txt')

# PermissionError: [WinError 5] 拒绝访问。: './books' -> './hhhh'
# os.rename('./books', './hhhh')


# 删除文件 不可删除目录
# os.remove('./user_bak.txt')

# 创建文件
# os.mkdir('./data')
# PermissionError: [WinError 5] 拒绝访问。: './data'
# os.remove('./data')

# 获取当前目录
# E:\pythonProjects\test
# print(os.getcwd())

# 改变目录
# E:\pythonProjects
# os.chdir('../')
# print(os.getcwd())

# 删除目录 创建/删除目录需要逐级挨个创建/删除 无法跨级创建/删除目录
# os.mkdir('./data')
# file_path = r'E:\pythonProjects\test\data\bak'
# os.mkdir(file_path)
# dirs = os.listdir(r'E:\pythonProjects\test\data\bak')
# print(dirs)
# os.rmdir(r'E:\pythonProjects\test\data\bak')
# os.rmdir(r'E:\pythonProjects\test\data')

# 判断是否为目录
# print(os.path.isdir(file_path))

# 判断是否为文件
# print(os.path.isfile(file_path))

# 获取文件扩展名
# file_path = r'E:\pythonProjects\test\books\readme.txt'
# dir, extension = os.path.splitext(file_path)
# print(dir)
# print(extension)

遍历books下面的文件以及目录

题目

遍历 books 下面的文件以及目录
books 目录设置如下

books 目录层级如图
在这里插入图片描述

代码实现

# 遍历books下面的文件以及目录
"""
输出 books\food\breakfast\bread.txt

目录
0
books = ['cat.bmp', 'food', 'IT', 'readme.txt']
1
food = ['breakfast', 'dinner', 'lunch']
IT = ['AI', 'coder', 'PM']
2 in food
breakfast = ['bread.txt', 'milk.txt']
dinner = ['fork.txt', 'noodles.txt']
lunch = ['potato.txt', 'rice.txt']
2 in IT
AI = ['deep_learning.txt']
coder = ['python.txt']
PM = ['xmind.txt']
"""
import os

# ['cat.bmp', 'food', 'IT', 'readme.txt']
books_dirs = os.listdir('./books')
# print(books_dirs)
for fir_dir in books_dirs:
    fir_path = './books/' + fir_dir
    # print(fir_path)
    sec_dirs = os.listdir(fir_path)
    # print(sec_dirs)
    for sec_dir in sec_dirs:
        sec_path = './books/' + fir_dir + '/' + sec_dir
        # print(sec_path)
        thrd_dirs = os.listdir(sec_path)
        # print(thrd_dirs)
        for thrd_dir in thrd_dirs:
            thrd_path = './books/' + fir_dir + '/' + sec_dir + '/' + thrd_dir
            print(thrd_path)
# 遍历books下面的文件以及目录 os.path.join 版
"""
输出 books\food\breakfast\bread.txt

目录
0
books = ['cat.bmp', 'food', 'IT', 'readme.txt']
1
food = ['breakfast', 'dinner', 'lunch']
IT = ['AI', 'coder', 'PM']
2 in food
breakfast = ['bread.txt', 'milk.txt']
dinner = ['fork.txt', 'noodles.txt']
lunch = ['potato.txt', 'rice.txt']
2 in IT
AI = ['deep_learning.txt']
coder = ['python.txt']
PM = ['xmind.txt']
"""
import os

# ['cat.bmp', 'food', 'IT', 'readme.txt']
books_dirs = os.listdir('./books')
# print(books_dirs)
for fir_dir in books_dirs:
    fir_path = os.path.join('./books/', fir_dir)
    # print(fir_path)
    sec_dirs = os.listdir(fir_path)
    # print(sec_dirs)
    for sec_dir in sec_dirs:
        sec_path = os.path.join('./books/', fir_dir, sec_dir)
        # print(sec_path)
        thrd_dirs = os.listdir(sec_path)
        # print(thrd_dirs)
        for thrd_dir in thrd_dirs:
            thrd_path = os.path.join('./books/', fir_dir, sec_dir, thrd_dir)
            print(thrd_path)

输出

image.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

饭碗、碗碗香

感谢壮士的慷概解囊!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值