Python学习笔记——CSDN学习记录二十六:文件模块

文件模块

一、绝对路径和相对路径:

        1. 绝对路径:硬盘上一个不会变的地址。一般情况下可以理解为从根目录开始描述的文件路径。

        2. 相对路径:相对当前目录的文件路径。

        · “.” 表示当前文件。

        · “..” 表示上一层文件夹。

二、os 模块与 os.path 模块:

        1. os.path 模块是 os 模块的一个子模块。首先,导入:

import os

        2. 获取当前 Python 文件的目录:

import os

print(os.getcwd())


# 输出结果:
#   
#       E:\programmer\CSDN\Python即时练习

                · getcwd() 方法可以获取当前 Python 文件所在工作目录的绝对地址。 

        3. 获取绝对路径—— os.path.abspath(path):

import os

ret = os.path.abspath("Python即时练习.py")

print(ret)


# 输出结果:
#   
#       E:\programmer\CSDN\Python即时练习\Python即时练习.py

        4. 获取相对路径—— os.path.relpath(path, start):

import os

ret1 = os.path.relpath("E:\\")
ret2 = os.path.relpath("E:\programmer\CSDN\Python即时练习")

print(ret1)
print(ret2)


# 输出结果:
#   
#       ..\..\..
#       .

三、路径检查方法:

        检查路径主要是为了检查文件或文件夹是否存在,或者判断一个路径对应的是一个文件夹还是一个文件。

        1. exists(path):如果 “path” 文件或文件夹存在则返回 True,否则返回 False;

        2. isabs(path):“path” 是绝对路径则返回 True,否则返回 False;

        3. isdir(path):“path” 是文件夹则返回 True,否则返回 False;

        4. isfile(path):“path” 是文件则返回 True,否则返回 False。

四、目录操作:

        1. mkdir(path):创建目录;

        2. rmdir(path):删除目录;

        3. chdir(path):切换当前工作目录到 “path”;

        4. remove(path):删除文件,如果 “path” 是一个目录,会报错。

五、获取文件大小:

         getsize():返回值的单位为字节。如:

import os

print(os.path.getsize("E:\programmer\CSDN\Python即时练习\Python即时练习.py"))


# 输出结果:
#   
#       895

六、获取指定目录下的所有内容:

        1. os.listdir():获取指定目录下的所有内容,包括文件与文件夹。

        2. os.walk():遍历目录树,通过循环可以获取到指定目录下所有的文件与文件夹。

七、Python 文件读取:

        Python 在读写文件时首先要做的是打开文件,其函数为 open()。

        1. 读取文件所有内容:使用 opne() 函数打开文件之后,可以通过 read() 方法读取文件内容。

                该方法相当于将文件内容一次性读取到程序的一个字符串中。如:

f = open('test.txt', encoding="utf-8")

read_str = f.read()

print(read_str)

f.close()



# 输出结果:
#   
#       Python
#       练习测试
#       Hello,Python!
#       AaBbCcDdEeFfGgHh
#       1234567890+-*///%**&|=

                · 使用 open() 打开文件时,必须在文件使用完毕后使用 close() 关闭文件。

        2. 逐行读取文件内容:

                通过循环调用文件对象,可以逐行输出内容。如:

f = open('test.txt', encoding="utf-8")

for line in f:
	print(line)

f.close()


# 输出结果:
#   
#       Python
#
#       练习测试
#
#       Hello,Python!
#
#       AaBbCcDdEeFfGgHh
#
#       1234567890+-*///%**&|=

                · .txt 文件中,每行的末尾默认有一个换行符,print() 函数也会带一个换行符。解决方法:

f = open('test.txt', encoding="utf-8")

for line in f:
	print(line, end="")

f.close()



# 输出结果:
#   
#       Python
#       练习测试
#       Hello,Python!
#       AaBbCcDdEeFfGgHh
#       1234567890+-*///%**&|=

        3. 逐行读取方法 readlines():

                使用 readlines() 方法可以将数据一次性读取到一个列表中。如:

f = open('test.txt', encoding="utf-8")

data = f.readlines()

print(data)

f.close()


# 输出结果:
#   
#       ['Python\n', '练习测试\n', 'Hello,Python!\n', 'AaBbCcDdEeFfGgHh\n', '1234567890+-*///%**&|=']

                · 输出内容中每行读取到的字符串都带一个 “\n” 换行符。

        4. with 上下文管理器:

                语法格式:

                        with open(待打开文件) as 文件对象:

                                文件操作代码块

                如:

with open('test.txt', encoding="utf-8") as f:

    read_str = f.read()

    print(read_str)



# 输出结果:
#   
#       Python
#       练习测试
#       Hello,Python!
#       AaBbCcDdEeFfGgHh
#       1234567890+-*///%**&|=

八、Python 写入文件:

        1. 语法格式:

                文件对象.write(待写入内容)

        2. 具体示例:

file = 'test.txt'

with open(file, mode="w", encoding="utf-8") as f:
    f.write("我是即将被写入的内容")

with open(file, encoding="utf-8") as f:
    read_str = f.read()
    print(read_str)


# 输出结果:
#   
#       我是即将被写入的内容

                · 待写入的内容需为字符串类型,其他类型写入会报错。

                · mode=“w” 方式写入后会覆盖原内容,追加数据用 mode=“a”。

                · open() 函数关于 mode 参数的其他值:

         3. 写入多行数据:

file = 'test.txt'

with open(file, mode="w", encoding="utf-8") as f:
    f.write("我是即将被写入的内容1\n")
    f.write("我是即将被写入的内容2")

with open(file, encoding="utf-8") as f:
    read_str = f.read()
    print(read_str)


# 输出结果:
#   
#       我是即将被写入的内容1
#       我是即将被写入的内容2

九、文件复制:

        1. 语法格式:

                shutil.copy(旧文件,新文件)

        2. 具体示例:

import shutil

shutil.copy("test.txt","aaa.txt")
shutil.copy("test.txt","../aaa.txt")

十、目录复制:

        1. 语法格式:

                shutil.copytree(旧目录,新目录)

        2. 具体示例:        

import shutil

shutil.copytree("../test","test0")

        · 如果目录之下有子目录或文件,也会一起复制。

        · 执行代码时,需确保新目录不存在,否则会报错。

十一、move() 方法:

        1. 使用 move() 方法移动文件:

                语法格式:

                        shutil.move(旧文件,新文件)

        2. 使用 move() 方法可以修改文件名,在移动文件过程中,如果新旧文件名称不一致,可实现移动文件并重命名的效果。

        3. 使用 move() 方法还可以移动目录。移动目录时,会将该目录下的所有子目录和文件一起移动。同样,如果新、旧目录名称不一致,也可以实现移动目录并重命名的效果。

十二、删除有数据的目录:

        rmtree():删除有数据的目录,相当于直接清空该目录下的所有子目录和文件,再顺便删除该目录。

十三、文件模块扩展:

        1. zipfile():直接对文件进行压缩与解压操作。

        2. 编码:

                (1) utf-8 编码能够解很多数潜在的编码BUG。

                (2) utf-8 字母大小写都可以。

                (3) utf-8 中有个 BOM 文件,当发现 utf-8 无法解决编码问题时,设置为 utf-8-sig 尝试解决。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

HaJucy

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值