python基础学习(4)—文件处理

2023-10-26

python学习基础之文件处理

文件和目录管理

python能够快速大量地处理计算机系统中地文件与文件夹,可以用OS包进行目录地创建与删除、文件删除、执行操作系统等操作。

项目 功能
os 提供了创建目录、删除目录、删除文件、执行操作系统命令等方法
os.path 用于处理文件路径及路径名称并检查其是否存在,计算文件大小
os.walk 用于搜索指定目录及其子目录
shutil 相较于os具有更强的处理力,且可跨平台
glob 可返回指定文件的文件列表

os

"""
该文件默认的位置是在D:/python的目录下,
我们先在对应文件目录下创建一个123.txt,
然后利用程序删除该文件。
之后再运行该程序时应该弹出”123.txt文件没找到“字样。
@author: hellowentao
"""
import os
file ="123.txt"
if os.path.exists(file):
    os.remove(file)
else:
    print(file+"文件没找到")
runfile('D:/python学习/untitled11.py', wdir='D:/python学习')

runfile('D:/python学习/untitled11.py', wdir='D:/python学习')
123.txt文件没找到
"""
执行操作系统命令
@author: hellowentao
"""
import os
cur_path=os.path.dirname(__file__)
os.system("cls")#清除屏幕
os.system("mkdir dir2")#创建目录
os.system("copy remove.py dir2\copyfile.py")#复制文件并对其重命名
file=cur_path + "\dir2\copyfile.py"
print(file)
os.system("notepad"+file)#记事本打开文件

os.path

"""
os.path用于处理文件路径及路径名称并检查其是否存在,计算文件大小
@author: hellowentao
"""
import os
cur_path=os.path.dirname(__file__)
print("当前目录路径为:"+cur_path)

filename=os.path.abspath("system.py")
if os.path.exists(filename):#判断文件是否存在
    print("完整路径名称:"+filename)
    print("文件大小",os.path.getsize(filename))#返回指定文件大小
    
    basename=os.path.basename(filename)#返回路径名最后部的文件或者路径名
    print("路径最后的文件名为:"+filename)
    
    dirname=os.path.dirname(filename)#返回指定文件的完整路径名
    print("当前文件目录路径为:"+dirname)
    
    print("是否为目录:",os.path.isdir(filename))#检查指定路径是否为目录
    
    fullpath,fname=os.path.split(filename)#划分为路径和文件
    print("目录路径:"+fullpath)
    print("文件名为:"+fname)
    
    Drive,fpath=os.path.splitdrive(filename)#划分为磁盘名和路径名
    print("盘名:"+Drive)
    print("路径名:"+fpath)
    
    fullpath=os.path.join(fullpath+"\\"+fname)#将路径名和文件名合并成完整路径
    print("合并路径="+fullpath)

结果如下:

当前目录路径为:D:\python学习\chapter4文件处理及SQLite数据库
完整路径名称:D:\python学习\chapter4文件处理及SQLite数据库\system.py
文件大小 375
路径最后的文件名为:D:\python学习\chapter4文件处理及SQLite数据库\system.py
当前文件目录路径为:D:\python学习\chapter4文件处理及SQLite数据库
是否为目录: False
目录路径:D:\python学习\chapter4文件处理及SQLite数据库
文件名为:system.py
盘名:D:
路径名:\python学习\chapter4文件处理及SQLite数据库\system.py
合并路径=D:\python学习\chapter4文件处理及SQLite数据库\system.py

os.walk

"""
os.walk用于搜索指定目录及其子目录
@author: hellowentao
"""
import os
cur_path=os.path.dirname(__file__)
sample_tree=os.walk(cur_path)
for dirname,subdir,files in sample_tree:
    print("文件路径:",dirname)
    print("目录列表:",subdir)
    print("文件列表:",files)
    print()

结果如下

文件路径: D:\python学习\chapter4文件处理及SQLite数据库\oswalk
目录列表: ['dir']
文件列表: ['31.txt', '32.txt', 'oswalk.py']

文件路径: D:\python学习\chapter4文件处理及SQLite数据库\oswalk\dir
目录列表: ['subdir']
文件列表: ['21.txt', '22.txt']

文件路径: D:\python学习\chapter4文件处理及SQLite数据库\oswalk\dir\subdir
目录列表: []
文件列表: ['1.txt']

open打开文件

文件操作的应用之账号和密码的管理

# -*- coding: utf-8 -*-
"""
该程序可实现账号和密码的管理,可输入、修改删除以及显示账号和密码。
"""
"""
定义选项菜单
"""
def menu():
    os.system("cls")
    print("账号、密码管理系统")
    print("------------------------------")
    print("1.输入账号、密码")
    print("2.显示账号、密码")
    print("3.修改账号、密码")
    print("4.删除账号、密码")
    print("0.结束程序")
    print("------------------------------")

"""
将文件数据准换位字典数据
"""
def ReadData():
    with open('123.txt','r',encoding='UTF-8-sig') as f:
        filedata=f.read()
        if (filedata !=""):
            data = ast.literal_eval(filedata)
            return data
        else:
            return dict()
"""
显示账号和密码
"""
def disp_data():
    print("账号\t密码")
    print("===================")
    for key in data:
        print('{}\t{}'.format(key, data[key]))
    input("按任意键返回主菜单") 
"""
输入账号和密码
"""
def input_data():
    while 1:
        name = input("请输入账号(Enter==>停止输入")
        if name =="":break
        if name in data :
            print("{}账号已存在!".format(name))
            continue
        password = input("请输入密码")
        data[name]=password
        with open("password.txt","w",encoding='UTF-8-sig')as f:
            f.write(str(data))
        print("{}已保存完毕".format(name))
"""
修改账号和密码
"""
def edit_data():
    while 1:
        name = input("请输入需要修改的账号(Enter==>停止输入)")
        if name=="":break
        if not name in data:
            print("{}账户不存在!".format(name))
            continue
        print("原密码为:{}".format(data[name]))
        password=input("请输入新密码:")
        data[name]=password
        with open('password.txt','w',encoding = 'UTF-8-sig')as f:
            f.write(str(data))
            input("密码更改完毕,请按任意键返回主菜单")
            break
"""
删除账号和密码
"""
def delete_data():
    while 1:
        name = input("请输入需要删除的账号(Enter==>停止输入)")
        if name=="":break
        if not name in data:
            print("{}账户不存在!".format(name))
            continue
        print("确认删除{}的数据?".format(name))
        yn=input("(Y/N)?")
        if (yn=="Y" or yn=="y"):
            del data[name]
            with open('password.txt','w',encoding = 'UTF-8-sig')as f:
                f.write(str(data))
                input("已删除完毕,请按任意键返回主菜单")
                break      
import os,ast
data=dict()

data=ReadData()
while True:
    menu()
    choice=int(input('请输入您的选择:'))
    print ()
    if choice==1:
        input_data()
    elif choice==2:
        disp_data()
    elif choice==3:
        edit_data()
    elif choice==4:
        delete_data()
    else:break
        
print("程序执行完毕!")

结果显示如下:

------------------------------
1.输入账号、密码
2.显示账号、密码
3.修改账号、密码
4.删除账号、密码
0.结束程序
------------------------------
请输入您的选择:1
请输入账号(Enter==>停止输入taotao
请输入密码1314520
taotao已保存完毕
请输入账号(Enter==>停止输入fff
请输入密码5201314
fff已保存完毕
请输入账号(Enter==>停止输入ft
请输入密码987654321
ft已保存完毕

请输入账号(Enter==>停止输入
账号、密码管理系统
------------------------------
1.输入账号、密码
2.显示账号、密码
3.修改账号、密码
4.删除账号、密码
0.结束程序
------------------------------
请输入您的选择:2
账号	密码
===================
taotao	1314520
fff	5201314
ft	987654321
按任意键返回主菜单3
账号、密码管理系统
------------------------------
1.输入账号、密码
2.显示账号、密码
3.修改账号、密码
4.删除账号、密码
0.结束程序
------------------------------
请输入您的选择:3
请输入需要修改的账号(Enter==>停止输入)daf
daf账户不存在!

请输入需要修改的账号(Enter==>停止输入)fer
fer账户不存在!

请输入需要修改的账号(Enter==>停止输入)taotao
原密码为:1314520
请输入新密码:131452zwt
密码更改完毕,请按任意键返回主菜单
账号、密码管理系统
------------------------------
1.输入账号、密码
2.显示账号、密码
3.修改账号、密码
4.删除账号、密码
0.结束程序
------------------------------
请输入您的选择:4
请输入需要修改的账号(Enter==>停止输入)ft
确认删除ft的数据?
(Y/N)?y
已删除完毕,请按任意键返回主菜单
账号、密码管理系统
------------------------------
1.输入账号、密码
2.显示账号、密码
3.修改账号、密码
4.删除账号、密码
0.结束程序
------------------------------
请输入您的选择:2
账号	密码
===================
taotao	131452zwt
fff	5201314
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

python基础学习(4)—文件处理 的相关文章

随机推荐

  • JavaScript原型Prototype详情

    文章来源 学习通http www bdgxy com 目录 1 概述 1 1原型是什么 1 2获取原型 2 原型属性 2 1利用原型添加属性与方法 2 2访问原型属性原型方法 3 自有属性与原型属性 3 1检测自有属性或者原型属性 4 is
  • 五人合伙最佳股份分配_合伙人要有明确的退出机制,好聚好散!

    合伙人合伙 就像结婚 有结婚 就有离婚 合伙人退出时怎么办 股权如何处置 不少创业者对此都没有一个明确的概念 完全没有合伙人退出机制 这会给后续的公司运营带来很多麻烦 那么接下来就跟着小编一起看看怎样大可能的规避这个情况呢 一些公司 前期某
  • idea git版本回滚

    idea git回滚代码的方法 1 选中项目右击 选中Git 再选中Show History 如图所示 可以查看到git提交历史记录 2 找到要回滚的git记录右击 选中Copy Revision Number 3 再次右击项目依次选中Gi
  • android实现app通过jni调用C/C++方法

    本文实现在Android app中使用调用jni库调用本地C C 方法 1 新建android工程 2 新建java上层方法 本例子在工程中新建 cn landsem jnistudy 包 在其中新建TestManager类用于调用本地C
  • mybatis系列九:利用业务实体类和hashmap进行关联

    其实mybatis的关联是很灵活的 可以不用任何关联配置 这里介绍两种关联方式 可以针对于任何关联操作 不管是几对几 方式一 利用业务实体类进行关联 sql配置
  • windows cmd编码-chcp命令

    为什么80 的码农都做不了架构师 gt gt gt 参考资料 windows cmd 编码 1 chcp命令作用 功能 显示或设置活动代码页编号 不加参数键入 CHCP 显示活动代码页编号 2 chcp用法 CHCP nnn nnn 指定代
  • validation校验规则

    空检查 Null 验证对象是否为null NotNull 验证对象是否不为null 无法查检长度为0的字符串 NotBlank 检查约束字符串是不是Null还有被Trim的长度是否大于0 只对字符串 且会去掉前后空格 NotEmpty 检查
  • PCB各层的含义 (solder paste 区别)

    PCB各层的含义 solder paste 区别 PCB层的定义 阻焊层 solder mask 是指板子上要上绿油的部分 因为它是负片输出 所以实际上有solder mask的部分实际效果并不上绿油 而是镀锡 呈银白色 助焊层 paste
  • 软件测试基础知识 —— 白盒测试

    白盒测试 白盒测试 White Box Testing 又称结构测试 透明盒测试 逻辑驱动测试或基于代码的测试 白盒测试只测试软件产品的内部结构和处理过程 而不测试软件产品的功能 用于纠正软件系统在描述 表示和规格上的错误 是进一步测试的前
  • Ant Design of Blazor 教程 从0-1搭建 3.环境搭建

    1 Ant Design 引入 安装nuget包 找到Client的Program cs项目 我这里使用的是 NET 6 NET 5及以下直接写在方法体里面就ok了 在client的index html中引入对应的css和js 在 Impo
  • 逻辑结构与存储结构关系

    概述 逻辑结构是数据元素之间的关系 存储结构是数据元素一起关系在计算机中的存储方式 逻辑结构 逻辑结构是数据元素之间抽象化的关系 与数据的存储无关 独立于计算机 它是从具体问题中抽象出来的数学模型 集合 数据元素键除同属一个集合外 无其他联
  • 三维模型进行孔洞填充 (附 c++ 代码)

    代码的主要作用是对一个三维模型进行孔洞填充 并通过可视化工具展示填充后的结果 代码主要流程如下 加载原始三维模型数据 使用孔洞填充算法对模型进行孔洞填充 将填充后的模型数据保存到文件中 使用可视化工具展示填充后的模型 具体的代码解释如下 使
  • [改善Java代码]适时选择getDeclaredxxx和getxxx

    Java的Class类提供了很多的getDeclaredxxx方法和getxxx方法 例如getDeclaredmethod和getMethod成对出现 getDeclaredConstructors和getConstructors也是成对
  • LSC(Lens Shading Correction)——镜头阴影矫正

    产生原因 由于镜头原因导致光线丢失 注意红线 此时颜色就分离了 校正方法 网格化或者半径化方法 用一张灰度图来储存增益 各个像素点 增益恢复到最终的情况 网格化的方法通过划分网格节约存储空间 代码 不考虑像素存储 function LSCC
  • python二手房交易预测及展示系统

    一 项目目的及意义 项目的目的是在采集自贝壳二手房交易平台的成都市二手房成交数据的基础上 对数据进行处理和挖掘 以网站为载体实现二手房交易分析 卖方价格预测和买方房屋推荐三个主要功能 二手房交易分析功能服务于统计人员 对成都的二手房交易做完
  • 树莓派配置WiFi热点,远程播放视频小项目手把手教学

    1 安装树莓派OS镜像 Raspberry Pi OS Raspberry Pihttps www raspberrypi com software 下载官方镜像32位 一定不能下载最新版 下载最新版会导致后面步骤无法正常进行 我是用的是2
  • 51单片机点亮LED灯以及实现2盏LED灯的交替闪烁

    点亮LED灯 根据单片机原理图 将LED灯1和LED灯2介入单片机的口设为低电平即可 代码如下 include reg52 h sbit led1 P3 7 void main led1 0 给led1一个低电平 点亮 结果图 图中有一盏L
  • c# 创建只接收消息的窗口

    如果用自带的form 必须show后再hide 不是很好用 用以下代码即可 public class NotifierNativeWindow NativeWindow const string WindowName MessageOnly
  • Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目[Java通用框架源码及开发视频教程]

    Java源码 JavaWeb开发框架 代码 SSH SSM OA ERP CRM Java项目 功能简介 A 代码生成器 开发利器 生成Java各层次的类和JSP等文件 提高开发效率 B 阿里巴巴数据库连接池Druid 性能好的数据库连接池
  • python基础学习(4)—文件处理

    python学习基础之文件处理 文件和目录管理 os os path os walk open打开文件 文件和目录管理 python能够快速大量地处理计算机系统中地文件与文件夹 可以用OS包进行目录地创建与删除 文件删除 执行操作系统等操作