[TOC]在目录下创建一个py文件并运行。os模块在Python中有一个内置库os,它是一个系统接口库,操作系统接口。在Linux系统中处理数据和运行脚本时,经常会操作文件和目录,所以os库就起到了这个作用。对具有固定逻辑的文件和目录的操作可以写成脚本的形式。下面是一些常用的方法:getcwd获取当前目录路径[我没有名字!@i-7lo31rsrCeallach_Shaw]$pwd/home/coggle/Ceallach_Shaw[我没有名字!@i-7lo31rsrCeallach_Shaw]$vios_test。py新建一个py文件,导入os模块,使用getcwd方法打印当前路径。注意:这里使用的是vi,所以退出保存的方式是esc退出插入模式,切换到命令行模式,输入wq,回车保存。(vi的使用后面就不详细说了,忘记的可以看之前的文章Linux基础(一)importosprint(os.getcwd())在命令行下,运行py文件,打印出来的路径和当前路径一致。[我没有名字!@i-7lo31rsrCeallach_Shaw]$python3os_test.py/home/coggle/Ceallach_Shawpath.abspath('.')。代表当前路径,查看当前目录的绝对路径7lo31rsrCeallach_Shaw]$python3os_test.py/home/coggle/Ceallach_Shaw补充:“。”表示当前目录,也可以用“./”表示;“..”表示上级目录,也可以用“../”表示;“~”代表用户的主目录;“/”在Linux文件系统的树状结构中最顶端,我们称它为Linux文件系统的根,也就是Linux文件系统的入口(参考前面内容中的目录结构图)articleLinux基础(一))listdir('.')列出当前目录下的所有文件文件和目录importosl=os.listdir('.')print(l)如果只是需要列出当前目录下的所有目录(文件不是必须的),在for循环后面加条件判断是否是目录ifos.path.isdir(x)[xforxinos.listdir('.')ifos.path.isdir(x)]mkdir,rmdirmkdir-createdirectory,rmdir-deletedirectory在当前目录下创建dir2目录:importosos.mkdir(os.getcwd()+'/dir2')dir2目录创建成功:[Ihavenoname!@i-7lo31rsrCeallach_Shaw]$python3os_test.py[Ihavenoname!@i-7lo31rsrCeallach_Shaw]$lsaffairs.txtcoggledirdir2os_test.pytest.pytest2.txt补充:removedirs,递归删除目录remove,删除文件重命名文件或目录重命名重命名目录dir2todir3:importosos.rename('dir2','dir3')[我没有名字!@i-7lo31rsrCeallach_Shaw]$python3os_test.py[我没有名字!@i-7lo31rsrCeallach_Shaw]$lsaffairs.txtcoggledirdir3os_test.pytest.pytest2.txtpath.splitext输入文件的绝对路径,获取文件扩展名importosprint(os.path.splitext(os.getcwd()+'os_test.py'))output:('/home/coggle/Ceallach_Shawos_test','.py')column需要添加当前目录下的所有.py文件,判断是否为文件ifos.path.isfile(x):l=[xforxinos.listdir('.')ifos.path.isfile(x)andos.path.splitext(x)[1]=='.py']print(l)sys模块sys模块主要负责与Python解释器交互。该模块提供了一系列控制Python运行环境的函数,函数和变量sys.argv实现了程序外部向程序传递参数。简单的说,sys.argv[]是一个从程序外部获取参数的桥梁,它返回的是一个参数列表。第一个元素是程序本身,后面是外部给定的参数。下面是打印python的帮助信息:importsysprint(sys.argv)output:可以看出output的第一个参数是文件名,后面的参数是从外部传入的参数。我们经常看到在命令行的情况下,输入--help、--version等参数,打印出相关信息。sys.argv的作用是将外部参数值传递给目标方法/函数。看书上的另一个相关例子,关于--help,--version参数的实现:importsysdefreadfile(filename):f=open(filename)whileTrue:line=f.readline()iflen(line)==0:breakprint("wrong!EOF")print(line)iflen(sys.argv)<2:print('Noactionspecified.')sys.exit()#从第二个参数(外部传入第一个参数),以--开头,从这个参数的第三个字符开始截取ifsys.argv[1].startswith('--'):option=sys.argv[1][2:]#如果--之后的字符是版本,然后输出Version1.2ifoption=='version':print('Version1.2')elifoption=='help':print('''\Thisprogramprintsfilestothestandardoutput.Any可以指定文件数。选项包括:--version:打印版本号--help:显示此帮助''')else:打印('Unknownoption.')sys.exit()else:forfilenameinsys.argv[1:]:readfile(filename)sys.path获取指定模块搜索路径的字符串集合。当我们导入一个模块时:importxxx,默认情况下,python解析器会搜索并打印出当前目录、安装的内置模块和第三方模块的顺序,搜索路径存放在sys的路径中module:importsysprint(sys.path)现在有一种很常见的情况,就是你写了一个Py文件,放到了另外一个目录下。如果当前目录下的py文件需要引用写入的py文件中的方法,则需要把存放py脚本的目录添加到sys.path的列表中。当需要引用的模块和需要执行的脚本文件不在同一目录时,可以添加路径,格式如下:importsyssys.path.append('需要执行的模块地址被引用')#sys.path.append(..)#意思是添加当前路径的上一级目录。练习使用os模块打印/usr/bin/路径下所有m开头的文件importos#首先切换到/usr/bin/目录下c=os.chdir('/usr/bin/')#路径。isfile方法判断是否为文件,startswith判断字符串的首字母ml=[xforxinos.listdir(c)ifos.path.isfile(x)andx.startswith('m')]print(l)打印命令行参数importsys#第一个参数为文件名,外部传入的参数从第二个参数开始print(sys.argv[1:])参考链接:https://docs.python.org/zh-cn...https://www.cnblogs.com/peter...欢迎关注我公众号:单数论
