python---os模块使用详解

简介:   相关方法或属性:    getcwd() --- 获取当前的操作目录,等同于linux中的pwd命令。      调用:os.getcwd()    chdir() --- 改变python脚本的工作目录。

  相关方法或属性:

    getcwd() --- 获取当前的操作目录,等同于linux中的pwd命令。

      调用:os.getcwd()

    chdir() --- 改变python脚本的工作目录。

      调用:os.chdir(path) (path以字符串形式传入)

      例如:

>>> os.getcwd()
'C:\\Users\\BLUE'
>>> os.chdir('D:\\Program Files')
>>> os.getcwd()
'D:\\Program Files'
>>> os.chdir(r'C:\Users\BLUE')
>>> os.getcwd()
'C:\\Users\\BLUE'

    curdir --- 当前目录   使用:os.curdir

    pardir --- 当前目录的父目录   使用: os.pardir

      例如:

>>> os.curdir
'.'
>>> os.pardir
'..'
>>> os.getcwd()
'C:\\Users\\BLUE'
>>> os.chdir(os.pardir)
>>> os.getcwd()
'C:\\Users'

    makedirs() --- 递归的创建目录。

      调用:os.makedirs('dir_1/dir_2/dir_3/.../dir_n')

      例如:os.makedirs(r'C:\a\b\c\d')  #该操作会依次在C盘下创建a, b, c, d四个文件夹(若a目录存在则只创建b,c,d三个目录)。

    removedirs() --- 若当前目录为空则删除,并切换到父级目录,若为空继续删除,依次递归。

      调用:os.removedirs('dir_1/dir_2/dir_3/.../dir_n')

      例如:os.removedirs(r'C:\a\b\c\d')  #该操作会依次在C盘下依次删除d, c, b, a四个文件夹,如果中间某一级目录不为空,则在该级停止删除。

    mkdir() --- 创建单级目录。

      调用:os.mkdir('dir_1/dir_2/dir_3/.../dir_n')

      例如:os.mkdir(r'C:\a\b\c\d')  #该操作会在C盘下创建d文件夹(若a, b, c目录有一个不存在,则无法创建并报错)。

    rmdir() --- 删除单级空目录。

      调用:os.rmdir('dir_1/dir_2/dir_3/.../dir_n')

      例如:os.rmdir(r'C:\a\b\c\d')  #若d目录为空,该操作只删除d目录, 否则无法删除并报错。

    listdir() --- 以列表的形式列出制定目录下的所有文件(包括隐藏文件),子目录。

      调用:os.listdir(path)

      例如:(列出D盘下的所有文件)

>>> os.listdir(r'D:')
['Anaconda3', 'BaiduNetdisk', 'BHO', 'Data', 'guiminer', 'Intel', 'JetBrains', 'Profiles', 'Program', 'Tencent', 'Thunder', 'Thunder BHO Platform', 'UninstallXLWFP.exe', 'WinRAR', '腾讯游戏']

    remove() --- 删除一个文件。

      调用:os.remove(path)

    rename() --- 对一个文件重命名。

      调用:os.rename(old_filename, new_filename)  #注意不能覆盖已存在文件

    stat() --- 获取文件或目录的属性信息。

      调用:os.stat(path)

      例如:

>>> os.stat(r'C:\Windows\regedit.exe')
os.stat_result(st_mode=33279, st_ino=281474976742063, st_dev=1893840342, st_nlink=2, st_uid=0, st_gid=0, st_size=321024, st_atime=1489870628, st_mtime=1489870628, st_ctime=1489870628)
>>> os.stat(r'C:\Windows')
os.stat_result(st_mode=16895, st_ino=281474976712108, st_dev=1893840342, st_nlink=1, st_uid=0, st_gid=0, st_size=32768, st_atime=1502900732, st_mtime=1502900732, st_ctime=1489837220)

    sep --- 使用os.sep获取当前平台的路径的分隔符(目录与子目录之间)(例如windows下是r‘\’,Linux下时‘/’)。

    linesep --- 使用os.linesep获取当前平台的换行符(例如windows下是‘\r\n’,Linux下时‘\n’)。

    pathsep --- 使用os.pathsep获取当前平台文件路径的分隔符(文件之间)(例如windows下是‘;’,Linux下时‘:’)。

    name --- 使用os.name获取当前平台名称。

      例如:

>>> os.sep
'\\'
>>> os.linesep
'\r\n'
>>> os.pathsep
';'
>>> os.name
'nt'

    system() --- 执行系统命令。

      调用:os.system(command)

      例如:

>>> os.system('ping www.baidu.com')

正在 Ping www.A.sHiFeN.com [220.181.112.244] 具有 32 字节的数据:
来自 220.181.112.244 的回复: 字节=32 时间=38ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=38ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=38ms TTL=55
来自 220.181.112.244 的回复: 字节=32 时间=37ms TTL=55

220.181.112.244 的 Ping 统计信息:
    数据包: 已发送 = 4,已接收 = 4,丢失 = 0 (0% 丢失),
往返行程的估计时间(以毫秒为单位):
    最短 = 37ms,最长 = 38ms,平均 = 37ms

    environ --- 使用os.environ获取系统环境变量。

      例如:

>>> os.environ
environ({'COMPUTERNAME': 'DESKTOP-KTUG9G5', 'APPDATA': 'C:\\Users\\BLUE\\AppData\\Roaming', 'USERDOMAIN_ROAMINGPROFILE': 'DESKTOP-KTUG9G5', 'HOMEPATH': '\\Users\\BLUE', 'NUMBER_OF_PROCESSORS': '8', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'ONEDRIVE': 'C:\\Users\\BLUE\\OneDrive', 'LOGONSERVER': '\\\\DESKTOP-KTUG9G5', 'OS': 'Windows_NT', 'TEMP': 'C:\\Users\\BLUE\\AppData\\Local\\Temp', 'COMMONPROGRAMW6432': 'C:\\Program Files\\Common Files', 'PROGRAMDATA': 'C:\\ProgramData', 'PROMPT': '$P$G', 'COMMONPROGRAMFILES(X86)': 'C:\\Program Files (x86)\\Common Files', 'PROCESSOR_IDENTIFIER': 'Intel64 Family 6 Model 60 Stepping 3, GenuineIntel', 'LOCALAPPDATA': 'C:\\Users\\BLUE\\AppData\\Local', 'USERNAME': 'BLUE', 'PROCESSOR_REVISION': '3c03', 'PROGRAMFILES': 'C:\\Program Files', 'PROGRAMW6432': 'C:\\Program Files', 'WINDIR': 'C:\\Windows', 'PUBLIC': 'C:\\Users\\Public', 'ASL.LOG': 'Destination=file', 'PSMODULEPATH': 'C:\\Program Files\\WindowsPowerShell\\Modules;C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules', 'PROCESSOR_LEVEL': '6', 'SYSTEMROOT': 'C:\\Windows', 'SESSIONNAME': 'Console', 'ALLUSERSPROFILE': 'C:\\ProgramData', 'SYSTEMDRIVE': 'C:', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'PROGRAMFILES(X86)': 'C:\\Program Files (x86)', 'PROCESSOR_ARCHITECTURE': 'AMD64', 'HOMEDRIVE': 'C:', 'TMP': 'C:\\Users\\BLUE\\AppData\\Local\\Temp', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'PATH': 'D:\\Program Files\\Anaconda3\\Library\\bin;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;D:\\Program Files\\Anaconda3;D:\\Program Files\\Anaconda3\\Scripts;D:\\Program Files\\Anaconda3\\Library\\bin;C:\\Users\\BLUE\\AppData\\Local\\Microsoft\\WindowsApps;C:\\Users\\BLUE\\AppData\\Local\\GitHubDesktop\\bin', 'USERDOMAIN': 'DESKTOP-KTUG9G5', 'USERPROFILE': 'C:\\Users\\BLUE'})

    path.abspath() --- 获取文件的绝对路径

      调用:os.path.abspath(filename)

      例如:

>>> os.chdir(r'C:\windows')
>>> os.path.abspath('regedit.exe')
'C:\\windows\\regedit.exe'

    path.split() --- 传入一个文件路径,返回一个tuple(由两部分构成(path, filename))。

      调用:os.path.split(path)

      例如:

    path.dirname() --- 获取路径中的目录。

      调用:os.path.dirname(path)

    path.basename() --- 获取路径中的文件名。

      调用:os.path.basename(path)

>>> os.path.dirname(r'C:\Windows\System32\drivers\etc\hosts')
'C:\\Windows\\System32\\drivers\\etc'
>>> os.path.basename(r'C:\Windows\System32\drivers\etc\hosts')
'hosts'
>>> os.path.split(r'C:\Windows\System32\drivers\etc\hosts')
('C:\\Windows\\System32\\drivers\\etc', 'hosts')

    path.exists() --- 判断路径是否存在。

      调用:os.path.exists(path)

    path.isabs() --- 判断路径是否是绝对路径。

      调用:os.path.isabs(path)

    path.isfile() --- 判断是否是文件。

      调用:os.path.isfile(path)

    path.isdir() --- 判断是否是目录。

      调用:os.path.isdir(path)

      例如:

>>> os.path.exists(r'C:\Windows\System32\drivers\etc\hosts')
True
>>> os.path.exists(r'C:\Windows\System32\drivers\etc\abcd')
False
>>> os.path.isabs(r'C:\Windows\System32\drivers\etc\hosts')
True
>>> os.path.isabs(r'../')
False
>>> os.path.isfile('C:\Windows\System32\drivers\etc\hosts')
True
>>> os.path.isfile('C:\Windows\System32\drivers\etc')
False
>>> os.path.isdir('C:\Windows\System32\drivers\etc')
True
>>> os.path.isdir('C:\Windows\System32\drivers\etc\hosts')
False

    path.join() --- 将一个或多个路径正确地连接起来。

      调用:os.path.join(path, *paths)

    path.getatime() --- 获取文件最后的访问时间(以时间戳的形式返回)。

      调用:os.path.getatime(path)

    path.getmtime() --- 获取文件最后的修改时间(以时间戳的形式返回)。

      调用:os.path.getmtime(path)

      例如:

>>> os.path.join('C:', r'\windows\System32', r'\System32\drivers')
'C:\\System32\\drivers'
>>> os.path.join('C:', r'\windows\System32')
'C:\\windows\\System32'
>>> os.path.getatime('C:\Windows\System32\drivers\etc\hosts')
1501070798.585747
>>> os.path.getmtime('C:\Windows\System32\drivers\etc\hosts')
1502505489.0068946

    popen()  ---   打开到命令cmd的管道。返回值是连接到管道的打开文件对象,根据mode是'r'(默认)还是'w'    

      调用:os.popen(cmd, mode="r", buffering=-1)    #一般后两个参数默认即可

>>> import os
>>> f = os.popen("dir")
>>> content = f.read()
>>> print(content)
 驱动器 C 中的卷没有标签。
 卷的序列号是 70E1-B5D6

 C:\Users\BLUE 的目录

2017/10/06  17:11    <DIR>          .
2017/10/06  17:11    <DIR>          ..
2017/07/28  15:55    <DIR>          .android
2017/07/30  12:44    <DIR>          .astropy
2017/08/06  13:58    <DIR>          .conda
2017/08/07  22:05                80 .gitconfig
2017/07/30  13:07    <DIR>          .ipython
2017/07/30  12:52    <DIR>          .matplotlib
2017/07/30  12:34    <DIR>          .PyCharm2017.1
2017/10/07  14:08    <DIR>          .VirtualBox
2017/07/26  20:51    <DIR>          AppData
2017/09/17  10:10    <DIR>          Contacts
2017/09/28  20:35    <DIR>          Desktop
2017/10/06  18:25    <DIR>          Documents
2017/10/06  18:41    <DIR>          Downloads
2017/09/17  10:10    <DIR>          Favorites
2017/09/27  12:59    <DIR>          Links
2017/09/17  10:10    <DIR>          Music
2017/09/27  12:59    <DIR>          OneDrive
2017/09/17  10:10    <DIR>          Pictures
2017/09/17  10:10    <DIR>          Saved Games
2017/09/17  10:10    <DIR>          Searches
2017/10/07  15:46    <DIR>          Videos
               1 个文件             80 字节
              22 个目录 61,312,913,408 可用字节

 

目录
相关文章
|
10月前
|
开发者 Python
如何在Python中管理模块和包的依赖关系?
在实际开发中,通常会结合多种方法来管理模块和包的依赖关系,以确保项目的顺利进行和可维护性。同时,要及时更新和解决依赖冲突等问题,以保证代码的稳定性和可靠性
297 62
|
5月前
|
Python
Python教程:os 与 sys 模块详细用法
os 模块用于与操作系统交互,主要涉及夹操作、路径操作和其他操作。例如,`os.rename()` 重命名文件,`os.mkdir()` 创建文件夹,`os.path.abspath()` 获取文件绝对路径等。sys 模块则用于与 Python 解释器交互,常用功能如 `sys.path` 查看模块搜索路径,`sys.platform` 检测操作系统等。这些模块提供了丰富的工具,便于开发中处理系统和文件相关任务。
211 14
|
9月前
|
Python
Python Internet 模块
Python Internet 模块。
201 74
|
6月前
|
人工智能 自然语言处理 Shell
[oeasy]python070_如何导入模块_导入模块的作用_hello_dunder_双下划线
本文介绍了如何在Python中导入模块及其作用,重点讲解了`__hello__`模块的导入与使用。通过`import`命令可以将外部模块引入当前环境,增强代码功能。例如,导入`__hello__`模块后可输出“Hello world!”。此外,还演示了如何使用`help()`和`dir()`函数查询模块信息,并展示了导入多个模块的方法。最后,通过一个实例,介绍了如何利用`jieba`、`WordCloud`和`matplotlib`模块生成词云图。总结来说,模块是封装好的功能部件,能够简化编程任务并提高效率。未来将探讨如何创建自定义模块。
75 8
|
6月前
|
缓存 Shell 开发工具
[oeasy]python071_我可以自己做一个模块吗_自定义模块_引入模块_import_diy
本文介绍了 Python 中模块的导入与自定义模块的创建。首先,我们回忆了模块的概念,即封装好功能的部件,并通过导入 `__hello__` 模块实现了输出 &quot;hello world!&quot; 的功能。接着,尝试创建并编辑自己的模块 `my_file.py`,引入 `time` 模块以获取当前时间,并在其中添加自定义输出。
94 5
|
10月前
|
算法 数据安全/隐私保护 开发者
马特赛特旋转算法:Python的随机模块背后的力量
马特赛特旋转算法是Python `random`模块的核心,由松本真和西村拓士于1997年提出。它基于线性反馈移位寄存器,具有超长周期和高维均匀性,适用于模拟、密码学等领域。Python中通过设置种子值初始化状态数组,经状态更新和输出提取生成随机数,代码简单高效。
244 63
|
8月前
|
缓存 安全 Linux
Linux系统查看操作系统版本信息、CPU信息、模块信息
在Linux系统中,常用命令可帮助用户查看操作系统版本、CPU信息和模块信息
1372 23
|
7月前
|
Python API 监控
将Python CLI工具发布为pip模块的完整指南
注册PyPI账户 访问PyPI官网注册账户 推荐使用双因素认证增强安全性 生成API令牌 访问PyPI账户管理 生成具有"Upload packages"权限的令牌,妥善保存 确保模块名唯一性 在PyPI搜索页面验证模块名未被使用 建议使用小写字母和连字符的组合(如my-cli-tool)
132 9
|
10月前
|
Python
Python的模块和包
总之,模块和包是 Python 编程中非常重要的概念,掌握它们可以帮助我们更好地组织和管理代码,提高开发效率和代码质量
213 61
|
10月前
|
数据可视化 Python
如何在Python中解决模块和包的依赖冲突?
解决模块和包的依赖冲突需要综合运用多种方法,并且需要团队成员的共同努力和协作。通过合理的管理和解决冲突,可以提高项目的稳定性和可扩展性