5.9笔记+day 13作业

本文深入讲解Python中的文件操作,包括读取、写入、权限设置等基本操作,以及使用os模块进行文件和目录的高级管理。从文件句柄的使用到with语句的便捷,再到文件编码的处理,全面覆盖Python文件操作的方方面面。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

文件

#文件的简单操作
#1、读取文件
file = open(“a.txt”,mode=“r”)

x=file.read()
print(x)
file.close()
#这里的file 叫做文件的句柄(变量)用来操作文件第一个参数是文件的路径,第二个参数mode=访问文件的类型,r表示读,默认也是r模式

#2、写文件

file = open("a.txt",mode="w")
file.write("asdfghj")
file.close()

#文件权限
#r表示只读,rb是以二进制格式打开一个文件用于只读,r+表示打开一个文件用于读写,rb+表示已二进制格式打开一个文件用于读写
#w表示只写,wb表示以二进制格式打开一个文件只用于写入,w+表示打开一个文件用于读写,wb+表示以二进制格式打开一个文件用于读写
#a表示打开一个文件用于追加,不能读,ab表示以二进制打开一个文件用于追加,a+是打开一个文件用于读写,ab+是以二进制打开一个文件用于追加

文件操作

#读操作
#read() 一次性读取文件的全部内容,括号内可以赋值规定读取的长度

file = open("a.txt")
ret = file.read()
print(ret)
file.close()

#readline() 每次读取一行,并且自带换行功能,每一行末尾会读到\n

file = open("a.txt")
ret = file.readline()
print(ret)

#readlines() 一次性以行的形式读取文件的所有内容并返回一个list,需要去遍历读出来

file = open("a.txt")
ret=file.readlines()
print(ret,type(ret))

#循环读取 file句柄是一个可迭代的对象,因此可以循环读取文件中的内容,每次读一行

file = open("a.txt")
for line in file:
    print(line)

#写操作
#write()

file = open("a.txt",mode="w")
file.write("aaaaa")
file.write("werewwe")
file.close()

#writelines file.writelines(seq) 把seq的内容全部写到文件中(多行一次性写入)

file = open("a.txt",mode="w")
lst = ["aa\n","ddfd","werdf"]
file.writelines(lst)
file.close()

#with 使用本方法操作文件,可以不用关闭文件,会自动关闭文件

with open("a.txt") as file :
    ret= file.read()
    print(ret)

#乱码
#Python读写文件时,默认使用的编码为平台编码,也就是gbk,在pycharm中创建的文件默认使用的是utf-8编码
with open(“a.txt”,mode=“w”,encoding=“utf-8”) as f:#encoding="utf-8"就是规定了编码
f.write(“哈哈哈”)

os模块

重命名文件 os.rename()

import os
os.rename("a.txt","sd.txt")    

#删除文件os.remove()

import os
os.remove("sd.txt")#如果是目录的话会报错

创建目录 mkdir() 生成的单层目录

import os
os.mkdir("zzz")

#创建多级目录makedirs()

os.makedirs("xxxxx\\xxxxx\\xxxxx")

#删除目录 rmdir() 删除一层目录

import os
os.rmdir("zzz")
#删除多级目录
os.removedirs("xxxxx\\xxxxx\\xxxxx")

#获取当前所在目录 getcwd()

import os
path = os.getcwd()
print(path)

#获取目录列表os.listdir(path)

import os
lst=os.listdir(os.getcwd())
print(lst)

#切换所在目录 chdir()

import os
print(os.getcwd())
os.chdir(os.getcwd()+"\\aaa")
print(os.getcwd())

#判断文件或文件夹是否存在

import os
b=os.path.exists("5.5learn.py")
c=os.path.exists("aaa")
d=os.path.exists("wwwww.py")
e=os.path.exists("qqqqq")
print(b,c,d,e)#True True False False

#判断是否为文件 isfile()

import os
print(os.path.isfile("aaa"))#False
print(os.path.isfile("5.5learn.py"))#True

#判断是否为目录 isdir()

import os
print(os.path.isdir("aaa"))#True
print(os.path.isdir("5.5learn.py"))#False

#判断是否为绝对路径

import os
print(os.path.isabs("d:\\pywork\\aaa"))#True
print(os.path.isabs("aaa"))#False

#获取绝对路径

import os
abspath = os.path.abspath("aaa")
print(abspath)

#获取路径中的最后部分

import os
path = os.path.basename("d:\\pywork\\aaa")
print(path)#aaa

#获取路径中的路径部分

import os 
path=os.path.dirname("d:\\pywork\\aaa")
print(path)#d:\pywork

#自定义mkdirs方法

import os
def mkdirs(path):
    file_lst=path.split("/")
    for file in file_lst:
        if not os.path.exists(file):
            os.mkdir(file)
        os.chdir(file)

if __name__=="__main__":
    path=input("请输入")
    mkdirs(path)

#文件搜索
练习递归

‘’’
用户输入文件名以及开始搜索的路径,搜索该文件是否存在,如遇到文件夹,则进入文件夹继续搜索
‘’’

import os
import sys

sys.setrecursionlimit(1000)  # set the maximum depth as 1500
def file_find(file_path, file_name):
    if os.path.isdir(file_path):
        file_list = os.listdir(file_path)
        for each in file_list:
            temp_dir = file_path + os.sep + each
            if os.path.isdir(temp_dir):
                temp = file_find(temp_dir, file_name)
                if temp == True:
                    return True
            elif os.path.isfile(temp_dir) and each == file_name:
                return True
        return False
    else:
        print('{}不是一个目录'.format(file_path))
print(file_find(os.getcwd(), 'b.txt'))

练习递归
#通过给定的文件夹, 列举出这个文件夹当中, 所有的文件,以及文件夹, 子文件夹当中的所有文件
import os

def listFilesToTxt(dir, file):
    file_list = os.listdir(dir)
    for file_name in file_list:
        new_fileName = dir + "/" + file_name
        if os.path.isdir(new_fileName):
            file.write(new_fileName + "\n")
            listFilesToTxt(new_fileName, file)
        else:
            file.write("\t" + file_name + "\n")
    file.write("\n")


f = open(os.getcwd() + "\\list.txt", "a", encoding='utf-8')
listFilesToTxt(os.getcwd() + "\\dir", f)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值