sys模块
sys模块提供了由解释器使用或者维护的变量,以及和解释器交互的函数访问。
常用类包:
sys.argv
在执行python脚本时命令中参数的列表,argv[0]表示脚本名,如果加了-c时,argv[0]表示 ‘-c’。
可以通过如下脚本进行测试:
import sys
print("hello python")
def main():
for i in range(len(sys.argv)):
print(sys.argv[i])
if __name__ == "__main__":
main()
在终端运行:
@ubuntu:~/workspace/TestDemo$ python test.py
hello python
test.py
@ubuntu:~/workspace/TestDemo$
Python -c [python语句]可以直接运行python语句,如:
python -c "print('hello world')"
sys.path
指定解释器搜索模块的路径,根据PYTHONPATH环境变量和以来安装的值进行初始化。
因此,如果要想将自实现的文件加入到全部,则可以通过该list来实现,如:
sys.path.insert(0,os.path.dirname(__file__))
sys.platform
获取当前系统平台,值如下:
System
platform value
Linux
‘linux’
Windows
‘win32’
Windows/Cygwin
‘cygwin’
Mac OS X
‘darwin’
使用时:
if sys.platform.startswith('win'):
# windows-specific code here...
elif sys.platform.startswith('linux'):
# Linux-specific code here...
sys.stdin、sys.stdout、sys.stderr`
解释器的标准输入、输出、错误对象。
stdin用于所有的交互式输入(包括对input()的调用);
stdout用于输出print()和表达式语句以及input()的提示。
解释器自己的提示和错误信息会走到stderr中。
将控制台输出重定向到文件中,就可以使用到sys.stdout.如:
import sys
sys.stdout.write("sdf")
# 如果对文件进行读取操作,文件操作权限必须是writable
fh = open("file1.txt", "w")
sys.stdout = fh
print("Use sys.stdout output")
fh = open("file1.txt", "r")
sys.stdin = fh
content = input(fh)
print(content)
os.path模块
该模块实现了一些常用函数,用来处理和操作文件路径。
os.path.abspath(filename)
返回给定路径的绝对路径。
os.path.basename(filename)
返回给定路径的文件名。
os.path.commonpath(pathlist)
返回路径列表中相同的部分。
os.path.commonprefix(pathlist)
返回路径列表中相同的部分,在比较是否相同时以字节为单位。
os.path.dirname(path)
返回给定文件路径的路径部分
os.path.realpath(path)
返回指定文件名的规范路径,消除路径中遇到的任何符号链接
os.path.exists(path)
判断该路径是否存在
一般在获取对应文件的路径时,可以dirname()和realpath搭配使用:
os.path.dirname(os.path.realpath(__file__))
file表示当前文件
os.path.join(path, *paths)
将给定的一个或多个路径智能地进行连接并返回,如果出现绝对路径,则之前连接的清除掉,并从该绝对路径起重新进行连接。
os.path.split(path)
将给定的path路径分割为(header,tail)的形式并返回,tail是路径中最后一部分,header是路径中除tail之外的部分,如果路径已/结尾,则tail为空的字符串,如:
>>>os.path.split("/a/b/c/d")
('/a/b/c', 'd')
如果路径中没有/,则header为空字符串,如:
>>>os.path.split("adbc")
('', 'adbc')
>>>
os.path.splitext(path)
以空串''或'.'将路径拆分,并返回(root,ext)形式的元组,root+ext=path,可以用该方法来剥离扩展名,如:
>>>os.path.splitext("E:\Python\Python3\split.py")
('E:\\Python\\Python3\\split', '.py')
>>>
>>>os.path.splitext("E:\Python\Python3")
('E:\\Python\\Python3', '')
>>>
>>>os.path.splitext("split.py")[0]
'split'
>>>
有了sys和os.path模块,如果要向将自己的模块配置到python环境变量中,则可以通过如下方式:
sys.path.insert(0,os.path.abspath(modules))