欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

python之os模块

程序员文章站 2022-07-10 14:14:09
...

os模块就是python和操作系统交互的模块

1、os.getcwd,获取当前的工作脚本的工作目录

r = os.getcwd()
print(r)

# E:\python\pycharm\goto_end\week2\模块系列

 

2、os.chdir,改变当前脚本的工作目录,相当于linux命令中的cd

tmp_path = "c:/tmp"   #先定义一个路径
print(os.getcwd())     #查看当前的工作路径
# E:\python\pycharm\goto_end\week2\模块系列
os.chdir(tmp_path)     #使用os.chdir命令切换工作路径到指定的目录
print(os.getcwd())     #再次使用os.getcwd来获取当前的工作路径

# c:\tmp

 

3、os.curdir这个方法目前不会使用,网上也没有查到相关的资料

 

4、os.pardir,获取当前目录的父目录的名称,我们可以看到,父目录其实就是“..”

tmp_path = "E:\python\pycharm\goto_end\week2\模块系列"
os.chdir(tmp_path)                 #使用os.chdir方法切换当前的工作目录到tmp_path中
print(os.getcwd())                 #使用os.getcwd获取当前的工作目录
print(type(os.pardir),os.pardir,sep="\n")   #打印os.pardir的类型和值,可以看到是字符串类型,值为".."和linxu中的一样
# <class 'str'>
# ..

 

5、os.makedirs,创建多级目录

# os.makedirs()
print("==========os.makedirs===============")
tmp_path = "c:/tmp"
os.chdir(tmp_path)
print(os.getcwd())
make_path = "c:/tmp/a/b/c"
# os.makedirs(make_path)

#可以看到目录已经创建成功C:\tmp\a\b\c

 

6、os.removedirs 如果层级目录全部为空,则会递归删除,直到最后一个父目录

s = "os.removedirs"
print(s.center(40,"="))
# make_path = "c:/tmp/a/b/c"
# os.removedirs(make_path)        删除指定的目录,查看已经删除了

 

7、os,makedir,创建单级目录

# os.mkdir()
s = "os.mkdir"
print(s.center(40,"="))
# make_path = "c:/tmp/a"
# os.mkdir(make_path)   可以看到在指定目录下创建了a这个目录

 

8、os.rmdir,删除单级目录

# os.rmdir()
s = "os.rmdir"
print(s.center(40,"="))
# make_path = "c:/tmp/a"
# os.rmdir(make_path)           可以看到a这个目录已经被删除了

 

9、os.listdir,列出指定目录下的文件和目录

# os.listdir()
s = "os.listdir"
print(s.center(40,"="))
# list_dir = "F:\BaiduNetdiskDownload\第一部分\第一部分"
# print(os.listdir(list_dir))

 

10、os.remove删除文件

# os.remove()
s = "os.remove"
list_path = "c:/tmp"
remove_path = "C:/tmp/a.txt"
print(s.center(40,"="))
# print(os.listdir(list_path))
# ['a.txt']
# os.remove(remove_path)
#
# print(os.listdir(list_path))
# []

 

11、os.rename,重命名文件或者目录

os.rename("oldname","newname")
s = "os.rename"
print(s.center(40,"="))

rename_dir = "c:/2"
rename_file = "C:/tmp/a.txt"
print(os.listdir(rename_dir))
os.rename(rename_file,"c:/tmp/a_new.txt")
print(os.listdir(rename_dir))

print(os.listdir("c:/"))
os.rename(rename_dir,"c:/1")
print(os.listdir("c:/"))

 

12、os.stat获取文件或者目录的信息

# os.stat("path/filename")
s = "os.stat"
print(s.center(40,"="))

stat_dir = "c:/1"
stat_file = "c:/tmp/a_new.txt"
print(os.stat(stat_dir))
这里可以获取到很多的信息,但是我们一般最常用的就是获取这个文件的字节大小,获取字节大小可以用下面的方法获取
# os.stat_result(st_mode=16895, st_ino=9288674231537252, st_dev=1014518766, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1499562788, st_mtime=1499562788, st_ctime=1499562788) print(os.stat(stat_file)) # os.stat_result(st_mode=33206, st_ino=43910096366946995, st_dev=1014518766, st_nlink=1, st_uid=0, st_gid=0, st_size=16, st_atime=1499562688, st_mtime=1499562696, st_ctime=1499562688)

 

13、os.set这个方法不会使用,网上也没有查到相关的信息

 

14、os.linesep,输出当前平台的换行符

s = "os.linesep"
print(s.center(40,"="))
print(list(os.linesep))

# ['\r', '\n']

 

15、os.pathsep,输出用于分割文件路径的字符串

s = "os.pathsep"
print(s.center(40,"="))
print(list(os.pathsep))

# [';']

 

16、os.name,输入当前平台的操作系统,windows--->nt,linux为posi

s = "os.name"
print(s.center(40,"="))
print(os.name)

# nt

 

17、os.system,执行操作系统的命令,因为我这里是windows,所有我就只能执行windows的系统命令

s = "os.system"
print(s.center(40,"="))
os.system("ipconfig")

 

18、os.environ,获取操作系统的环境变量

s = "os.environ"
print(s.center(40,"="))
print(os.environ)

# environ({'ALLUSERSPROFILE': 'C:\\ProgramData', 'APPDATA': 'C:\\Users\\Administrator\\AppData\\Roaming', 'COMMONPROGRAMFILES': 'C:\\Program Files\\Common Files', 'COMPUTERNAME': '97ODP8DJGDRURUA', 'COMSPEC': 'C:\\Windows\\system32\\cmd.exe', 'FP_NO_HOST_CHECK': 'NO', 'HOMEDRIVE': 'C:', 'HOMEPATH': '\\Users\\Administrator', 'LOCALAPPDATA': 'C:\\Users\\Administrator\\AppData\\Local', 'LOGONSERVER': '\\\\97ODP8DJGDRURUA', 'MOZ_PLUGIN_PATH': 'C:\\Program Files\\Foxit Software\\Foxit Reader\\plugins\\', 'NUMBER_OF_PROCESSORS': '2', 'OS': 'Windows_NT', 'PATH': 'C:\\Program Files\\NVIDIA Corporation\\PhysX\\Common;C:\\Windows\\system32;C:\\Windows;C:\\Windows\\System32\\Wbem;C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\;C:\\Users\\Administrator\\AppData\\Local\\Programs\\Python\\Python36-32', 'PATHEXT': '.COM;.EXE;.BAT;.CMD;.VBS;.VBE;.JS;.JSE;.WSF;.WSH;.MSC', 'PROCESSOR_ARCHITECTURE': 'x86', 'PROCESSOR_IDENTIFIER': 'x86 Family 6 Model 37 Stepping 5, GenuineIntel', 'PROCESSOR_LEVEL': '6', 'PROCESSOR_REVISION': '2505', 'PROGRAMDATA': 'C:\\ProgramData', 'PROGRAMFILES': 'C:\\Program Files', 'PSMODULEPATH': 'C:\\Windows\\system32\\WindowsPowerShell\\v1.0\\Modules\\', 'PUBLIC': 'C:\\Users\\Public', 'PYCHARM_HOSTED': '1', 'PYTHONIOENCODING': 'UTF-8', 'PYTHONPATH': 'E:\\python\\pycharm', 'PYTHONUNBUFFERED': '1', 'SESSIONNAME': 'Console', 'SYSTEMDRIVE': 'C:', 'SYSTEMROOT': 'C:\\Windows', 'TEMP': 'C:\\Users\\Administrator\\AppData\\Local\\Temp', 'TMP': 'C:\\Users\\Administrator\\AppData\\Local\\Temp', 'USERDOMAIN': '97ODP8DJGDRURUA', 'USERNAME': 'Administrator', 'USERPROFILE': 'C:\\Users\\Administrator', 'WINDIR': 'C:\\Windows', 'WINDOWS_TRACING_FLAGS': '3', 'WINDOWS_TRACING_LOGFILE': 'C:\\BVTBin\\Tests\\installpackage\\csilogfile.log'})

 

20、os.abspath,返回指定path的规范化绝对路径,这里真没看懂什么意思,感觉实际测试的结果没有什么区别

s = "os.path.sbspath"
print(s.center(40,"="))
abs_path = "F:\BaiduNetdiskDownload\第一部分\第一部分"
print(os.path.abspath(abs_path))
# F:\BaiduNetdiskDownload\第一部分\第一部分

  

21、os.path.split,把文件名和目录分割,然后放在一个tuple中,这里的文件名包括文件及其上一级目录

# os.path.split()
s = "os.path.split"
print(s.center(40,"="))
split_path = "F:\BaiduNetdiskDownload\第一部分\第一部分\0085-上节内容回顾2.avv"

print(os.path.split(split_path))


# ('F:\\BaiduNetdiskDownload\\第一部分', '第一部分\x0085-上节内容回顾2.avv')

  

22、os.path.dirname,返回指定路径的目录

s = "os.path.dirname"
print(s.center(40,"="))

dir_name = "F:\BaiduNetdiskDownload\第一部分\第一部分\0085-上节内容回顾2.avv"

print(os.path.dirname(dir_name))
# F:\BaiduNetdiskDownload\第一部分

  

23、os.path.basename,返回指定路径的文件名

s = "os.path.basename"
dir_name = "F:\BaiduNetdiskDownload\第一部分\第一部分\0085-上节内容回顾2.avv"
print(s.center(40,"="))
print(os.path.basename(dir_name))

# 第一部分 85-上节内容回顾2.avv
#这里我们可以和os.path.split的方法比较,发现python认为的文件名要包括文件名以及他的上一级目录

  

24、os.path.exists,指定的路径如果存在,则返回True,如果不存在,则返回False

s = "os.path.exists"
print(s.center(40,"="))
exists_dir = "F:\BaiduNetdiskDownload\第一部分\第一部分"

print(os.path.exists(exists_dir))

exists_dir = "F:\BaiduNetdiskDownload\第一部分\第一1部分"
print(os.path.exists(exists_dir))


# True
# False

  

25、os.path.isabs,指定的路径如果是绝对路径,则返回True,如果不是,则返回False

s = "os.path.isabs"
print(s.center(40,"="))
abs_dir = "F:\BaiduNetdiskDownload\第一部分\第一部分"
print(os.path.isabs(abs_dir))


abs_dir = "BaiduNetdiskDownload\第一部分\第一部分"
print(os.path.isabs(abs_dir))
#
# True
# False

  

26、os.path.isfile,指定的如果是文件,则返回True,如果是目录则返回False

s = "os.path.isfile"
print(s.center(40,"="))
print(os.getcwd())
# c:\tmp
dir_name = "a_new.txt"
print(os.path.isfile(dir_name))
# True

dir_name = "C:\tmp\a_new.txt"
print(os.path.isfile(dir_name))
# False

  

27、os.path.isdir,指定的路径如果是目录,则返回True,如果是文件则返回False

s = "os.path.isdir"
print(s.center(40,"="))
dir_name = "E:/360"
print(os.path.isdir(dir_name))

dir_name = "a_new.txt"
print(os.path.isfile(dir_name))

  

28、os.path.gatetime,返回指定的目录或者文件的最后的存取时间

s = "os.path.getatime"
print(s.center(40,"="))
getatime_path = "c:/tmp/a_new.txt"
print(os.path.getatime(getatime_path))

# 1499562688.7266502

  

29、os.path.gatmtime,返回指定的目录或者文件的最后修改时间

s = "os.path.getmtime"
print(s.center(40,"="))
getatime_path = "c:/tmp/a_new.txt"
print(os.path.getmtime(getatime_path))
# 1499562696.1190732

 

30、获取文件的大小可以这样获取

a = os.stat("D:\iso\oracle\RAC模板部署视频.exe")
print(a.st_size)

  

 31、通过dirname可以获取指定路径的父路径的绝对路径,可以看下面的例子,这个到导入模块的时候用的比较多

a = os.path.dirname("D:\iso\oracle\RAC模板部署视频.exe")
print(a)
# D:\iso\oracle
b = os.path.dirname(a)
print(b)
# D:\iso
c = os.path.dirname(b)
print(c)
# D:\