Python文件处理

Python文件处理

####文件操作介绍

  • 文件的概念
  • 文件的作用
    • 数据持久化
文件的打开与关闭
  • 生活实例(文件的操作)

    • 打开work文档
    • 修改数据
    • 保存文件
    • 关闭word
    python编程中,操作文件也一样
    打开文件/创建文件
    读写文件
    关闭文件
    
  • 打开文件

    • 函数语法
    open(文件名,访问方式)
    f = open('123.txt','w')
    
    • 作用
      • 打开已经存在的文件,或者创建一个新的文件
  • 常用访问方式:

r	:只读	指向文件头	默认方式
w	:只写	已经存在会覆盖,没有则创建新的
a	:追加	文件若存在,指向文件末尾,添加数据;文件不存在则创建新的
r+	:读写	指向文件的开头
w+	:读写	已经存在会覆盖,没有创建新的
a+	:读写   文件已存在,则指向文件尾部,
进行追加内容,没有则创建新文件
  • 关闭文件
    • 函数语法
    文件.close()
    f = open('123.txt','a+')
    f.close()
    
文件的读写
  • 写数据

    • 语法
    使用函数write('要写入的内容')
    
    • 案例
    f=open('123.txt','w')
    f.write('Hello World!')
    f.close()
    
  • 读数据(read) 读取全部数据

    • read(num)
    从指定的文件中读取长度为num的数据
    如果没有给num具体值,则读取所有(以
    字符串的形式返回)
    
    • 案例
    def readMethod():
        f = open('125.txt','r')
        result = f.read()
        # str 类型
        print(type(result))
        print(result)
        f.close()
    
  • 读数据(readLines) 读取多行数据内容,一行显示,\n分割

def readMethod1():
    f = open('125.txt','r')
    result = f.read()
# list 类型
    print(type(result))
    print(result)
    f.close()
  • 读数据(readLine) 读取第一行的数据,如果执行多行readline则连续读取行数据
f = open('125.txt','r')
#读取一个第一行字符串出来
result = f.readline()
# str 类型
print(type(result))
print(result)
f.close()
自定义文件复制工具(讲解思路)
  • 思路讲解
    • 打开源文件,判断源文件是否有效,有效进行后续操作
    • 新文件名字的生成 旧文件名+[复件]+.后缀(用到查找rfind,以及切片操作)
    • 开始复制文件(1. 整体复制 2.循环逐行复制)
    • 关闭文件
  • 代码
# 复制文件方法,旧文件[附件].后缀
def copyFile2(srcFileName):
    oldFileName = srcFileName
    # 先判断文件是否存在
    f = open(oldFileName, 'r')
    print(type(f))
    # 如果存在进行后续操作
    if f:
        # 截取出文件名字
        index= oldFileName.rfind('.')
        # 截取出文件后缀
        suffix = oldFileName[index:]
        # 新文件名为
        newFileName = oldFileName[:index]+'[复件]'+suffix
        newFile = open(newFileName,'w')
        content = f.read()
        newFile.write(content)
        newFile.close()
    f.close()
copyFile2('125.txt')
文件的定位读写
  • 获取当前的位置

    • 方法
    文件名.tell()
    可以获取文件指针当前在文件中的位置 +2
    
    • 用法
    f = open('125.txt','r')
    content = f.read(3)
    position = f.tell()
    print("当前的位置为:%d"%position)
    content = f.read(4)
    position = f.tell()
    print("当前的位置为:%d"%position)
    
  • 定位到某个位置

    • 方法
    seek(offset,from)
    offset:偏移位置
    from:三个值
    0:文件头
    1:当前位置
    2:文件尾			当使用 2 时 要在偏移量前加 - 
    
    • 用法
例:从文件头跳过2个字节,复制3个字节
f = open('125.txt','r')
# 从文件头开始跳过2个字节
f.seek(2,0)
# 获取当前位置
position = f.tell()
print("当前位置:%d"%position)
# 读取2个字节
content = f.read(2)
print(content)
f.close()
例:从文件尾部取2个字节(如果是从尾部进行重定位的话,需要以二进制形式打开文件)
# 从文件尾读取2个字节(尾部操作,需要使用二进制的形式打开   b)
f = open('125.txt', 'rb')
# 从尾部往前偏移2个字节
f.seek(-2, 2)
content = f.read()
print(content)
文件的重命名与删除

OS模块中的有对文件进行重命名以及删除的方法

  • 文件重命名

    • 方法
    rename('需要修改的文件名','新的文件名')
    
    • 用法
    #注意:要修改的文件一定要保证没有被其他占用
    import os
    os.rename('125.txt','127.txt')
    
  • 文件的删除

    • 方法
    remove(待删除文件的名字)
    
    • 用法
    import os
    remove('126.txt')
    
文件的相关操作

同样需要导入os模块:import os

  • 创建文件夹

    • 方法
    mkdir()
    
    • 用法
    import os
    os.mkdir()
    
  • 获取当前目录

    • 方法
    getcwd()
    
    • 用法
    import os
    os.getcwd()
    
  • 改变默认目录

    • 方法
    chdir()
    
    • 用法
    import os
    os.chdir("要修改到的默认目录")
    
  • 获取目录列表

    • 方法
    listdir('指定文件夹')
    
    • 用法
    import os
    os.listdir('d:/2018教学')
    
  • 删除文件夹

    • 方法
    rmdir('文件夹路径')
    
    • 用法
    import os
    os.rmdir('陈独秀文件夹')
    
代码行数统计器
  • 统计某个文件中的代码行数,忽略注释
# 统计一个xxx.py中所有的代码
def getNumberOfCodeLines(filename):
    count = 0
# 后边的encoding='utf-8' 解决中文读取问题
    f = open(filename, 'r', encoding='utf-8')
    if f:
        # 如果文件存在,开始统计
        content = f.readline()
        while content != '':
            if not content.startswith("#"):
                count += 1
            content = f.readline()
    return count
  • 打印一个文件夹中所有的文件名(递归解决)
def showAllFilesInDir(dirName):
    listfiles = os.listdir(dirName)
    for file in listfiles:
        # 文件路径为 文件夹名字+文件名
        newpath = dirpath+"/"+ file
        # 如果是文件夹
        if os.path.isdir(newpath):
            # 递归调用自己
            showAllFilesInDir(newpath)
        elif os.path.isfile(newpath):
            print(newpath)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值