美文网首页我的Python自学之路测试员的那点事
python 文件,文件夹操作全面解析

python 文件,文件夹操作全面解析

作者: 望月成三人 | 来源:发表于2020-08-16 13:39 被阅读0次

操作文件

  • mode的说明
    image.png
  • 读写文件
with open('data1.txt', mode='w', encoding="utf-8") as f:
    data = '11111e'
    f.seek(10)   #光标移动到10的位置
    f.write(data)

  f1 = open(r'D:\project\operate_file\data.txt', "r", encoding="utf-8")
    print(f1.readline())
    f1.close()
  • 打开多个文件
with open("file_test","r",encoding="utf-8") as f, \
        open("file_test2","r",encoding="utf-8") as f2:
    ...

flush方法

f = open("file_test","w",encoding="utf-8")
f.write("hello\n")
f.write("hello\n")
f.write("hello\n")
f.flush()
  • 一般的文件流操作都包含缓冲机制,write方法并不直接将数据写入文件,而是先写入内存中特定的缓冲区。
  • flush方法是用来刷新缓冲区的,即将缓冲区中的数据立刻写入文件,同时清空缓冲区。
  • 正常情况下缓冲区满时,操作系统会自动将缓冲数据写入到文件中。
  • 至于close方法,原理是内部先调用flush方法来刷新缓冲区,再执行关闭操作,这样即使缓冲区数据未满也能保证数据的完整性。
  • 如果进程意外退出或正常退出时而未执行文件的close方法,缓冲区中的内容将会丢失。
  • 但有时你需要在关闭前刷新到硬盘中,这时就可以使用 flush() 方法

操作文件夹

  • 判断路径或文件
os.path.isabs(...)      # 判断是否绝对路径
os.path.exists(...)     # 判断是否真实存在
os.path.isdir(...)       # 判断是否是个目录
os.path.isfile(...)       # 判断是否是个文件
  • 工作目录及创建文件夹操作
os.getcwd()       # 获取当前工作目录 等同于os.path.dirname(__file__) 
os.chdir(".\\test_mkdir") # 改变工作目录,. 表示本级目录; .. 表示上级目录
os.listdir(...)      # 列出目录下的文件
os.mkdir(...)      # 创建单个目录    
os.makedirs(...)    # 创建多级目
  • 删除文件夹、文件
os.rmdir(...) # 删除空文件夹 
os.remove(...) # 删除单一文件
shutil.rmtree(...) # 删除文件夹及其下所有文
  • 重命名文件夹/文件
os.rename(oldfileName, newFilename)
  • 复制文件/文件夹
shutil.copyfile("old","new") # 复制文件,都只能是文件
shutil.copytree("old","new") # 复制文件夹,都只能是目录,且new必须不存在
shutil.copy("old","new")  # 复制文件/文件夹。经过测试,直接复制文件夹,报权限问题;直接复制文件正常
 shutil.move("old","new")   # 移动文件/文件夹至 new 文件夹中

实例

进入到相对文件目录

# os.path.dirname(__file__) 表示得到当前目录路径等同于os.getcwd()
PATH = lambda p: os.path.abspath(
    os.path.join(os.path.dirname(__file__), p)
)
# 得到当前目录的t1文件夹
PATH("t1")
# 得到上级目录的t1文件夹
PATH(".../t1")
# 得到上级目录的log文件夹下的t1文件夹
PATH(".../log/t1")

引用公共模块

  • 在不同的项目中,需要引用到当前项目的公用方法
# 得到当前文件绝对路径
abs_path = os.path.abspath(os.path.dirname(__file__))
# 得到公共用例目录,采用切割项目名的方法
common_path = os.path.join(abs_path.split("airtest_auto")[0], "airtest_auto", "util")
# 导入到公用目录
sys.path.append(common_path)
from app_util import *

得到目录下的所有文件和文件夹

for root, dirs, files in os.walk("t3", topdown=False):
    for name in files:
        print(os.path.join(root, name))
        # t3\t2\t2_1\t2_1_1\t2_1_1.air
        print("====打印文件======")
    for name in dirs:
        print(os.path.join(root, name))
        # t3\t2\t2_1\t2_1_1
        print("====打印目录=========")

得到文件夹下的某些文件

for i in os.listdir("t1"):
    if i.find("txt") != -1:
        print(os.path.join("t1", i))

得到文件夹下的修改时间排序的文件

# 得到父目录的绝对路径
abs_parent = os.path.abspath("t1")
def sort_file_by_time(file_path):
    files = os.listdir(file_path)
    if not files:
        return
    else:
        # os.path.getmtime表示文件最近修改的时间
        # sorted 里面的reverse为True就是降序,为False就是增序
        files = sorted(files, key=lambda x: os.path.getmtime(os.path.join(file_path, x)), reverse=False)
        return files

print(sort_file_by_time(abs_parent))

参考如下

相关文章

  • python 文件,文件夹操作全面解析

    操作文件 mode的说明image.png 读写文件 打开多个文件 flush方法 一般的文件流操作都包含缓冲机制...

  • python常用文件操作总结

    python 移动文件或文件夹操作。python中对文件、文件夹操作时经常用到的os模块和shutil模块常用方法...

  • 14、python 操作文件之os模块使用总结

    1.python实现文件夹遍历 python 中os.path模块用于操作文件或文件夹 os.path.exist...

  • Python 文件操作

    一. Python 读写 创建文件 Python中对文件,文件夹(文件操作函数)的操作需要涉及到OS 模块和 sh...

  • opencv-实现图片的美容效果

    文件放在xhdpi,xxhdpi,xxxhdpi哪个文件夹下更高效? 大家可以看我上篇文章Bitmap全面解析理论...

  • jupyter 中要引入其他文件

    需要在文件夹下创建一个解析器,对ipynb文件进行解析,把文件内的各个模块加载到内存里供其他python文件调用。...

  • Python os 常用 模块

    python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。 os.getcwd() ...

  • python的学习方向

    我的学习计划: 1、Python基础语法、python字符串解析、python时间和日历、python文件操作,数...

  • 2017-5-25

    归纳1.文件夹的操作 os.listdir("/home/python")2.批量修改文件夹 3.oop,att...

  • python_对文件的处理

    !取前辈之精华,武装自己 python中对文件、文件夹(文件操作函数)的操作需要涉及到os模块和shutil模块。...

网友评论

    本文标题:python 文件,文件夹操作全面解析

    本文链接:https://www.haomeiwen.com/subject/bvftjktx.html