IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python os模块 -> 正文阅读

[Python知识库]python os模块

python os模块

记录os模块常用的函数
在这里插入图片描述

os.path常用函数

? 在没有特殊说明下,strPath可以是相对路径或者绝对路径;同时需要注意大多数os.path都相当于字符串操作,并没有进行输入strPath是否存在,是否有效的判断。

  • __file__返回当前python文件的关于工作目录的相对路径

  • os.path.join(StrPath, *paths) 函数用于路径拼接文件路径,可以传入多个参数

    • 其实就是拼接字符串,不关心文件是否存在
    • 从第二参数开始每个参数,如果使用/打头,默认直接返回该参数。
  • os.path.exists(StrPath) 返回一个bool型对象,判断括号里的文件或者目录是否存在的意思

    • 注意是exists, 而非exist
  • os.path.isdir(strPath) 返回bool型对象,判断strPath 是不是一个文件目录

  • os.path.idfile(strPath) 返回bool型对象,判断strPath 是不是一个文件

  • os.path.dirname(strPath) 返回一个strPath所在的目录

    • 其实根据文件分割符’/’,取倒数第一个文件分隔符之前的子串,不关心strPath是否存在
  • os.path.basename(strPath) 返回一个strPath所在的目录

    • 其实根据文件分割符’/’,取倒数第一个文件分隔符之后的子串,不关心strPath是否存在
  • os.path.abspath(strPath) 返回strPath对应的绝对路径

    • 如果strPath是存在的,绝对路径,直接返回。否则返回将工作目录(终端位置)和strPath使用join结合的路径,相当于只是个字符串拼接。
  • os.path.relpath(path[, start]) 返回strPath对应的相对路径.

    • start=None,返回相对于工作目录的路径,即path
    • path=aaa/bbb/ccc/ddd, start= aaa/bbb,返回相对于工作目录+start的目录(os.getcwd/aaa/bbb),即返回ccc/ddd
  • os.split(strPath) 对strPath进行分割,分割出目录名和文件名

    • 如果strPath是一个文件类型如 aaa/bbb/ccc.txt,则返回(aaa/bbb/, ccc.txt)
    • 如果trPath是一个目录类型 aaa/bbb/ccc/ ,则返回(aaa/bbb/ccc/, ‘’)
    • 其实分割并不智能,只是根据最后一个文件分割符’/’,将strPath 字符串分割成为两部分。
  • os.path.splitext(strPath) 对strPath进行分割,分割出目录名和扩展名

    • 本质根据strPath中的最后一个’.’,进行分割,输入aaa/bbb.txt ,返回(aaa/bbb,txt)
  • os.path.expanduser(strPath) 主要对家目录’~'进行替换,linux下替换成为/home/xxx/,

    • 注意在使用os模块中,不要使用"~/aaa/bbb/"类型的路径,先用该函数替换
  • os.path.normpath(strPath) 范化指定的路径strPath。在路径规范化过程中包括消除所有冗余分隔符(aaa///bbb→aaa/bbb),并且对./及../进行折叠(aaa/./bbb/../ccc →aaa/ccc)。

#encoding=utf-8
import os

###aaa/bbb/ccc 随便写的真实不存在 #####
print('#'*20+' test for os.path.join '+'#'*20)
join_path=os.path.join('aaa','bbb/ccc')
print(join_path) 
join_path=os.path.join('aaa','/bbb/ccc')
print(join_path)

print('#'*20+' test for os.path.exists '+'#'*20)
is_exist= os.path.exists(join_path)
print('join_path is exists {}'.format(is_exist))
is_exist = os.path.exists(__file__)
print('__file__ is exists {}'.format(is_exist))
file_dir = os.path.dirname(__file__)
is_exist = os.path.exists(file_dir)
print('directory of __file__ is exist: {}'.format(is_exist))

print('#'*20+' test for os.path.dirname '+'#'*20)
dir_name = os.path.dirname('aaa/bbb/ccc')
print("dir_name of aaa/bbb/ccc is {name}".format(name=dir_name))

print('#'*20+' test for os.path.basename'+'#'*20)
base_name=os.path.basename('aaa/bbb/ccc')
print("dir_name of aaa/bbb/ccc is {base}".format(base=base_name))
base_name=os.path.basename('aaa/bbb/ccc/')
print("dir_name of aaa/bbb/ccc/ is {base}".format(base=base_name))

print('#'*20+' test for os.path.isdir()'+'#'*20)
is_dir=os.path.isdir("aaa/bbb/ccc")
print("aaa/bbb/ccc is a directory : {}".format(is_dir))
is_dir=os.path.isdir(os.path.dirname(__file__))
print("dirname of __file__ is a directory : {}".format(is_dir))

print('#'*20+' test for os.path.isfile()'+'#'*20)
is_file=os.path.isfile("aaa/bbb/ccc/ddd.txt")
print("aaa/bbb/ccc/ddd.txt is a directory : {}".format(is_file))
is_file=os.path.isfile(__file__)
print(" __file__ is a file : {}".format(is_file))

print('#'*20+' test for os.path.abspath()'+'#'*20)
abs_file = os.path.abspath("aaa/bbb/ccc")
print("abs_file of aaa/bbb/ccc is {}".format(abs_file))
abs_file = os.path.abspath(__file__)
print("abs_file of __file__ is {}".format(abs_file))

print('#'*20+' test for os.path.relpath()'+'#'*20)
# import pdb;pdb.set_trace()
rel_file = os.path.relpath("aaa/bbb/ccc",start=None)
print("rel_file of aaa/bbb/ccc with start=None is {}".format(rel_file))
rel_file = os.path.relpath("aaa/bbb/ccc",start='aaa')
print("rel_file of aaa/bbb/ccc with start=aaa is {}".format(rel_file))
rel_file = os.path.relpath("aaa/bbb/ccc",start='aaa/bbb')
print("rel_file of aaa/bbb/ccc with start=aaa/bbb is {}".format(rel_file))
rel_file = os.path.relpath("aaa/bbb/ccc",start='aaa/bbb/ccc')
print("rel_file of aaa/bbb/ccc with start=aaa/bbb/ccc is {}".format(rel_file))

print('#'*20+' test for os.path.split()'+'#'*20)
split_file = os.path.split("aaa")
print("split_file of aaa  is {}".format(split_file))
split_file = os.path.split("aaa/bbb/ccc/")
split_file = os.path.split("aaa/bbb/ccc")
print("split_file of aaa/bbb/ccc  is {}".format(split_file))
split_file = os.path.split("aaa/bbb/ccc/")
print("split_file of aaa/bbb/ccc/  is {}".format(split_file))

print('#'*20+' test for os.path.splitext()'+'#'*20)
splitext_file = os.path.splitext("aaa/bbb/ccc/ddd.txt")
print("splitext_file of aaa/bbb/ccc/ddd.txt  is {}".format(splitext_file))

print('#'*20+' test for os.path.normpath()'+'#'*20)
normpath_file = os.path.normpath("aaa/bbb/.///../ddd.txt")
print("normpath_file of aaa/bbb/.///../ddd.txt  is {}".format(normpath_file))

在这里插入图片描述

os 常用函数

  • os.getcwd() 返回执行py文件时候中终端位置,效果同Shell中的pwd

  • os.chdir(strPath) 改变当前工作目录到指定的路径strPath,在python文件中使用相对路径(相对于工作目录),我们可以先使用该函数切换到指定工作目录

  • os.listdir(strPath) 用于返回路径strPath中由文件名目录名组成的列表。

  • os.system(“command”) 在python中执行linux命令或shell脚本,执行命令返回执行命令后的状态码

  • os.popen(“command”) 在python中执行linux命令或shell脚本,执行命令以文件对象返回命令输出内容。

    • 非阻塞的执行命令(执行os.popen(“command”)同时,向下执行其他python命令)
    • 想要阻塞,处理方法是使用read()或readlines()对命令的执行结果进行读操作,注意如果command命令是交互式的(ping 127.0.0.1 会一直在ping),使用读操作会造成完全阻塞。
#-ws\
#---test1\
#---------test1.py
#---------test2.py
#---------a.txt
#coding=utf-8
import os
print('\n'+'#'*20+' test for os.getcwd()'+'#'*20)
cur_path = os.getcwd()
print(f'cur_path is {cur_path}')

print('\n'+'#'*20+' test for os.getcwd()'+'#'*20)
os.chdir('./test1')
cur_path = os.getcwd()
print('after chdir cur_path is {}'.format(cur_path))
with open('a.txt','r') as fin:
    print('after chdir, we can find the file a.txt using relative dir,\n content in a.txt is {}'.format(fin.read()))

print('\n'+'#'*20+' test for os.listdir()'+'#'*20)
dir_list = os.listdir('./')
print('dir_list is {}'.format(dir_list))

print('\n'+'#'*20+' test for os.system()'+'#'*20)
flag = os.system('ls -la')
if flag==0:
    print('os.system() success')
else:
    print('os.system() fail')

print('\n'+'#'*20+' test for os.popen()'+'#'*20)
with os.popen('ls -la') as fin:
    for line in fin.readlines():
        line=line.strip()
        print('from os.popen  '+ line)


在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-03 16:02:37  更:2022-01-03 16:05:03 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 3:43:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码