Python中OS.PATH模块下的部分文件操作

在自动化测试过程中,会经常遇到路径的操作和获取,下面写一些简单的OS.PATH使用

1、路径操作

首先需要知道绝对路径,相对路径

1.绝对路径: 从磁盘的根目录开始定位,直到对应的位置为止。
2.相对路径: 从当前所在路径开始定位,直到对应的位置为止。用 “.” 表示当前目录;用“. .”表示上一级目录

import os

# 返回 path 的绝对路径
dir_path = os.path.abspath(__file__)
print("绝对路径为:", dir_path)

# 获取 path 路径的基本名称,即 path 末尾到最后一个斜杠的位置之间的字符串
dir_path = os.path.basename(__file__)
print("路径的基本名称:", dir_path)

# 返回 path 路径中的目录部分
dir_path = os.path.dirname(__file__)
print("路径的目录部分名称:", dir_path)

# 返回 path 的真实路径
dir_path = os.path.realpath(__file__)
print("真实路径:", dir_path)

# 把目录和文件名合成一个路径
path1 = os.path.dirname(__file__)
dir_path = os.path.join(path1, 'cmd.py')
print("把目录和文件名合成一个路径", dir_path)
I:\Python\python.exe C:\Users\Administrator\Desktop\debug\OS.PATH.py 
绝对路径为: C:\Users\Administrator\Desktop\debug\OS.PATH.py
路径的基本名称: OS.PATH.py
路径的目录部分名称: C:\Users\Administrator\Desktop\debug
真实路径: C:\Users\Administrator\Desktop\debug\OS.PATH.py
把目录和文件名合成一个路径 C:\Users\Administrator\Desktop\debug\cmd.py

进程已结束,退出代码为 0

2、文件操作

        2.1判断文件是否存在

os.path.exists(path)

import os

if os.path.exists('cmd.py'):
    print("该脚本已经存在")

if os.path.exists('cmd1.py'):
    print("改脚本已经存在")
else:
    print("该文件不存在是否需要创建一个?")
I:\Python\python.exe C:\Users\Administrator\Desktop\debug\OS.PATH.py 
该脚本已经存在
该文件不存在是否需要创建一个?

进程已结束,退出代码为 0

        2.2文件重命名

os.rename(src,dst)先判断该脚本是否已经存在,只有该脚本已经存在,才可以执行重命名操作,重命名之后的名称也不能已经存在。

import os

if os.path.exists("cmd.py"):
    print("该脚本存在,可以重命名。")
    if os.path.exists("cmd1.py"):
        print("cmd1.py脚本也已经存在")
    else:
        print("cmd1.py脚本不存在,可以用这个名称重命名。")
        os.rename('cmd.py', 'cmd1.py')
        print("重命名成功。")
else:
    print("该脚本存在,无法进行重命名操作!")
I:\Python\python.exe C:\Users\Administrator\Desktop\debug\OS.PATH.py 
该脚本存在,可以重命名。
cmd1.py脚本不存在,可以用这个名称重命名。
重命名成功。

进程已结束,退出代码为 0

        2.3文件的读写操作

                2.3.1文件读取

open(file_name,code)方法来创建(打开)文件(如果该文件已存在就直接打开,如果该文件不存在,就创建新文件)

w打开一个文件,只写
wb以二进制格式打开一个文件,只写
w+打开一个文件,读写
wb+以二进制格式打开一个文件,读写
a打开一个文件用于追加。若该文件已存在,则文件指针位于文件末尾,新的内容将被被写入到原有内容之后;若该文件不存在,则创建新文件进行写入。
ab以二进制格式打开一个文件,用于追加。若该文件已存在,则文件指针位于文件末尾,新的内容将被被写入到原有内容之后;若该文件不存在,则创建新文件进行写入。
a+打开一个文件用于读写.文件指针位于文件末尾
ab+以二进制格式打开一个文件用于读写。文件指针位于文件末尾
r以只读的方式打开文件。文件指针位于文件开头
r+打开一个文件用于读写。文件指针位于文件开头
rb以二进制格式打开一个文件进行读写。文件指针位于文件开头,一般用于非文本文件(如,图片)

数据的读取与写入方式

1、在文本模式下,文件中的内容被视为字符串(在 Python 3 中为 Unicode 字符串),并且会自动处理平台特定的行结束符。在 Windows 上,行结束符为 \r\n,在 Linux 上为 \n。当你从文件读取或写入文本时,Python 会自动处理这些行结束符。但是,在二进制模式下,数据则被视为原始字节流,不会对行结束符做任何处理。
2、编码问题: 在文本模式下,可以通过 encoding 参数指定一个字符编码方式,比如 UTF-8,ASCII等。当你从文件读取或写入文本时,Python 会自动根据指定的编码方式对文本进行编码或解码。但是,在二进制模式下,由于数据被视为原始字节流,不涉及任何编码和解码的操作,所以不需要(也不能)指定字符编码方式。
3、文件类型: 有些文件(比如图片,音频,视频等)是以二进制格式存储的,这些文件必须以二进制模式打开。如果尝试以文本模式打开这些文件,可能会导致数据的损坏。
因此,在处理文件时,应根据文件的类型和需要处理的数据类型选择适当的文件打开模式。如果你需要处理的是文本数据,那么通常应使用文本模式。如果你需要处理的是二进制数据(比如图片或音频文件),或者需要进行低级的文件操作(比如读写固定数量的字节),那么应使用二进制模式。
 

import os

txt = open("test.txt",'w')
print("成功创建一个txt,文件名为test.txt")

docx= open("test.docx","wb+")
print("成功创建一个docx文件,文件名为test.docx")

                2.3.2文件的写入

用write(string)向文件中写入内容
write(string)
string:要写入文件中的字符串。但需要注意的是,Python字符串可以是二进制字符串。特别是当,文件以二进制模式创建时,string要利用 encode()转换为bytes形式,否则会报错

1、write()方法的返回值为写入的字符长度;

2.write()方法不会在字符串的末尾添加换行符;

3.在文件关闭或缓冲区刷新前,字符串内容还存储在缓冲区中,在文件中是看不到写入的内容的。利用close()方法来关闭文件。


import os
import chardet

with open("test.txt","wb+") as txt:
    txt.write("\n我需要写一写内容:".encode())
    txt.write(("\n这个文件名为:"+txt.name).encode())
    txt.write(("\n创建的模式:"+txt.mode).encode())
    txt.write("\n我真的不想上班\n".encode())
    print(content)

                2.3.3打开文件并读取内容

import os
test1 = open("../test.txt","r")#以只读方式打开
str1 = test1.read(10)#获取前10个字符
print("前10个字符为:",str1)

str2 = test1.read()#读取剩余内容
test1 = read()
print("test文件中的剩余全部内容为: ",str2)
test.close()

    

        2.4文件夹的创建和删除

                2.4.1空文件夹删除

在删除操前,要先判断要删除的文件夹是否已经存在(即删除操作有无操作对象)
os.rmdir(path)方法只能删除空的文件夹,即文件夹中不能有文件夹或文件。否则操作无法执行。
我们也可以利用os.listdir(path)方法来查看文件夹中的文件夹或文件。该方法返回一个列表,其中包含由路径指定的目录中条目的名称。

import os

# ------在相对路径下创建文件夹----------------
# 在当前目录下创建一个文件夹
os.mkdir("testdir")

# 在当前目录的mydir1文件夹中创建一个子文件夹
os.mkdir(".\\testdir\\test")

# 在当目录的上一级目录下创建一个文件夹
os.mkdir("..\\up_testdir")

# -------在绝对路径下创建文件夹---------------
# 在C盘根目录下创建一个文件夹
os.mkdir("C:\\Users\\Administrator\\Desktop\\debug\\testdir1")

# 删除上面创建的up_testdir文件夹
if os.path.exists('C:\\Users\\Administrator\\Desktop\\up_testdir'):
    print("文件夹存在可删除")
    if len(os.listdir('C:\\Users\\Administrator\\Desktop\\up_testdir')) == 0:
        os.rmdir('C:\\Users\\Administrator\\Desktop\\up_testdir')
        print("up_testdir文件夹删除成功")
    else:
        print("无法删除该文件夹,该文件夹非空")
else:
    print("up_testdir文件夹不存在,没法删除")

# 删除上面创建的testdir文件夹
if os.path.exists('C:\\Users\\Administrator\\Desktop\\debug\\testdir'):
    print("文件夹存在可删除")
    if len(os.listdir('C:\\Users\\Administrator\\Desktop\\debug\\testdir')) == 0:
        os.rmdir('C:\\Users\\Administrator\\Desktop\\debug\\testdir')
        print("testdir文件夹删除成功")
    else:
        print("无法删除该文件夹,该文件夹非空")
else:
    print("testdir文件夹不存在,没法删除")
I:\Python\python.exe C:\Users\Administrator\Desktop\debug\OS.PATH.py 
文件夹存在可删除
up_testdir文件夹删除成功
文件夹存在可删除
无法删除该文件夹,该文件夹非空

进程已结束,退出代码为 0

                2.4.2非空文件夹删除

os.rmdir(path)方法只能删除空的文件夹。shutil可以删除非空文件夹。

import os
import shutil

# 删除上面创建的testdir文件夹
if os.path.exists('C:\\Users\\Administrator\\Desktop\\debug\\testdir'):
    print("文件夹存在可删除")
    if len(os.listdir('C:\\Users\\Administrator\\Desktop\\debug\\testdir')) == 0:
        os.rmdir('C:\\Users\\Administrator\\Desktop\\debug\\testdir')
        print("testdir文件夹删除成功")
    else:
        print("testdir文件夹非空")
        shutil.rmtree('C:\\Users\\Administrator\\Desktop\\debug\\testdir')
        print("testdir非空文件夹删除成功")
else:
    print("testdir文件夹不存在,没法删除")
I:\Python\python.exe C:\Users\Administrator\Desktop\debug\OS.PATH.py 
文件夹存在可删除
testdir文件夹非空
testdir非空文件夹删除成功

进程已结束,退出代码为 0

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值