共计 3428 个字符,预计需要花费 9 分钟才能阅读完成。
[TOC]
在目录下创立 py 文件,并进行运行
os 模块
在 Python 中有一个内置库 os,是一个零碎接口库,operating system interfaces。在 linux 零碎中解决数据、运行脚本的时候,常常会操作文件和目录,所以 os 库就是起这个作用,对于固定逻辑的文件、目录的操作,都能够写成脚本的模式。
上面就介绍几种罕用办法:
-
getcwd
获取当前目录门路
[I have no name!@i-7lo31rsr Ceallach_Shaw]$pwd /home/coggle/Ceallach_Shaw [I have no name!@i-7lo31rsr Ceallach_Shaw]$vi os_test.py
新建 py 文件,引入 os 模块,利用 getcwd 办法,打印以后门路。留神:这里用的 vi,所以退出保留的办法是,esc 退出 insert 模式,切换到命令行模式,输出 wq,回车保留。(后文对 vi 的应用不再赘述了,遗记了的同学就翻阅上一篇文章 Linux 根底(一)
import os print(os.getcwd())
命令行下,运行 py 文件,打印的门路与以后门路统一。
[I have no name!@i-7lo31rsr Ceallach_Shaw]$python3 os_test.py /home/coggle/Ceallach_Shaw
-
path.abspath(‘.’)
.
代表以后门路,查看当前目录的绝对路径import os #print(os.getcwd()) print(os.path.abspath('.'))
运行 py 文件:
[I have no name!@i-7lo31rsr Ceallach_Shaw]$python3 os_test.py /home/coggle/Ceallach_Shaw
补充:
- “.”示意当前目录,也能够用“./”示意;
- “..”示意上一级目录,也能够用“../”示意;
- “~”代表用户的宿主目录;
- “/”处于 Linux 文件系统树形构造的最顶端,咱们称它为 Linux 文件系统的 root,它是 Linux 文件系统的入口(参考上一篇文章内容中的目录结构图 Linux 根底(一))
-
listdir(‘.’)
列出当前目录下所有文件与目录
import os l=os.listdir('.') print(l)
如果只是须要列出当前目录下的所有目录(文件不须要),则在 for 循环前面加个条件判断是否为目录
if os.path.isdir(x)
[x for x in os.listdir('.') if os.path.isdir(x)]
-
mkdir、rmdir
mkdir- 创立目录、rmdir- 删除目录
在当前目录下创立一个 dir2 的目录:
import os os.mkdir(os.getcwd()+'/dir2')
dir2 目录创立胜利:
[I have no name!@i-7lo31rsr Ceallach_Shaw]$python3 os_test.py [I have no name!@i-7lo31rsr Ceallach_Shaw]$ls affairs.txt coggle dir dir2 os_test.py test.py test2.txt
补充:
- removedirs,递归删除目录
- remove,移除文件
-
rename
文件或者目录
重命名把目录 dir2 重命名为 dir3:
import os os.rename('dir2','dir3')
[I have no name!@i-7lo31rsr Ceallach_Shaw]$python3 os_test.py [I have no name!@i-7lo31rsr Ceallach_Shaw]$ls affairs.txt coggle dir dir3 os_test.py test.py test2.txt
-
path.splitext
输出文件的绝对路径,失去文件扩展名
import os print(os.path.splitext(os.getcwd()+'os_test.py'))
输入:
(‘/home/coggle/Ceallach_Shawos_test’, ‘.py’)
列出当前目录下所有.py 文件,需加上条件判断是否为文件
if os.path.isfile(x)
:l=[x for x in os.listdir('.') if os.path.isfile(x) and os.path.splitext(x)[1]=='.py'] print(l)
sys 模块
sys 模块次要负责 与 Python 解释器进行交互
,该模块提供了一系列用于管制 Python 运行环境的函数和变量。
-
sys.argv
实现从程序
内部
向程序传递参数,简略说,sys.argv[]就是一个从程序内部获取参数的桥梁,其返回的时一个参数列表。第一个元素是程序自身,随后才顺次是内部给予的参数。上面就是打印 python 的帮忙信息:
import sys print(sys.argv)
输入:
可见,输入第一个参数是文件名,前面的参数就是内部传入的参数。
咱们常常看到在命令行的状况下,输出 –help,–version 等参数,即可打印出相干信息。sys.argv 的作用就是传递内部参数值到指标办法 / 函数中去。
再看一个书上的相干例子,对于 –help,–version 参数的实现:
import sys def readfile(filename): f=open(filename) while True: line=f.readline() if len(line)==0: break print("wrong! EOF") print(line) if len(sys.argv) < 2: print ('No action specified.') sys.exit() # 从第二个参数(内部传入的第一个参数),以 -- 结尾的,并且从这个参数的第三个字符开始截取 if sys.argv[1].startswith('--'): option = sys.argv[1][2:] # 如果 -- 前面的字符是 version,则输入 Version 1.2 if option == 'version': print ('Version 1.2') elif option == 'help': print ('''\ This program prints files to the standard output. Any number of files can be specified. Options include: --version : Prints the version number --help : Display this help''') else: print ('Unknown option.') sys.exit() else: for filename in sys.argv[1:]: readfile(filename)
-
sys.path
获取指定模块搜寻门路的字符串汇合。
当咱们导入一个模块时:import xxx,默认状况下 python 解析器会搜寻并依照当前目录、已装置的内置模块和第三方模块这个程序打印进去,搜寻门路寄存在 sys 模块的 path 中:
import sys print(sys.path)
当初有一种很常见的状况,就是你写好了 Py 文件,放在另外一个目录下,如果当前目录下的 py 文件须要援用写好的 py 文件里的办法的时候,就须要将寄存 py 脚本的目录退出 sys.path 的列表中。
对于
须要援用的模块和须要执行的脚本文件不在同一个目录时
,能够依照如下模式来增加门路:import sys sys.path.append(’须要援用模块的地址 ') # sys.path.append(..) # 这代表增加以后门路的上一级目录
练习
- 应用 os 模块打印 /usr/bin/ 门路下所有以 m 结尾的文件
import os
# 先切换到 /usr/bin/ 目录下
c = os.chdir('/usr/bin/')
# path.isfile 办法判断是否为文件,startswith 判断字符串结尾首字母 m
l = [x for x in os.listdir(c)
if os.path.isfile(x) and x.startswith('m')]
print(l)
- 打印命令行参数
import sys
# 第一个参数为文件名,内部传入的参数从第二个参数开始
print(sys.argv[1:])
参考链接:
- https://docs.python.org/zh-cn…
-
https://www.cnblogs.com/peter…
欢送关注集体公众号:Distinct 数说