当前位置: 澳门新濠3559 > 服务器运维 > 正文

时间有三种表示方式,一、os模块常用方法和属性

时间:2019-11-08 22:07来源:服务器运维
Python模块知识6:OS、SYS模块,pythonos 1、os模块,和系统相关的,比如获取路径、目录、文件夹之类 常用方法: os.getcwd() #获取当前工作目录,即当前Python脚本工作的目录路径 os.rename(

Python模块知识6:OS、SYS模块,pythonos

1、os模块,和系统相关的,比如获取路径、目录、文件夹之类

常用方法:

  • os.getcwd() #获取当前工作目录,即当前Python脚本工作的目录路径

  • os.rename('oldname','new')#重命名文件/目录

  • os.path.abspath(path) #返回path规范化的绝对路径,含文件名的

  • os.path.dirname(path) #获取文件所在的文件夹名称

  • os.chdir("dirname") #改变当前脚本的工作目录,相当于shell下的cd

  • os.path.join(path1[,path2[,...]])#将多个路径组合返回,第一个绝对路径之前的参数将被忽略

  • os.curdir #返回当前目录:('.')

  • os.pardir #获取当前目录的父目录字符串名('..')

  • os.makedirs('dir1/dir2')#可生产多层递归目录

  • os.removedirs('dirname1')#若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,以此类推

  • os.mkdir('dirname')#生成单级目录,相当于shell中的mkdir dirname

  • os.rmdir('dirname')#删除单级空目录,若目录不为空,则无法删除,报错,相当于shell中的rmdir dirname

  • os.listdir('dirname')#列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印

  • os.remove()#删除一个文件,

  • os.stat('path/filename')#获取文件/目录信息

  • os.sep 操作系统特定的路径分隔符,win下为"\",linux下为"/"

  • os.linesep #当前平台使用的行中支付,win下为"tn",Linux下为"/n"

  • os.pathsep#用于分隔文件路径的字符串

  • os.name #字符串只是当前使用平台,win->'nt';Linux->'posix'

  • os.system("bash command")#运行shell命令,直接显示

  • os.environ#获取系统环境变量

  • os.path.split(path)#将path分割成目录和文件名二元组返回

  • os.path.basename(path)#返回path最后的文件名,如何path以/或结尾,那么就会返回空值,即os.path.split(path)第二个元素

  • os.path.exists(path) #如果path存在,返回True,如果path不存在,则返回False

  • os.path.isabs(path)#如果path是绝对路径,返回True

  • os.path.isfile(path)#如果path是一个存在的文件,返回True,否则返回False

  • os.path.isdir(path)#如果path是一个存在的目录,则返回True,否则返回False

  • os.path.getatime(path)#返回path所指向的文件或者目录最后存取的时间

用法案例:

案例1:分别获取绝对路径和文件夹

import os
print(os.getcwd())#C:UsershuhuanhuanPycharmProjectsstudy2017
print(os.path.abspath(__file__))#方法1获取文件的绝对路径C:UsershuhuanhuanPycharmProjectsstudy2017s1.py
print(os.path.abspath("s2.py"))#方法2获取文件的绝对路径C:UsershuhuanhuanPycharmProjectsstudy2017s2.py
print(os.path.dirname(os.path.abspath(__file__)))#获取文件所在的文件夹C:UsershuhuanhuanPycharmProjectsstudy2017
print(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))#C:UsershuhuanhuanPycharmProjects

效果:

案例2:获取绝对路径和上级文件夹

import os
base_dir=os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
print(os.path.abspath(__file__))
print(os.path.dirname(os.path.abspath(__file__)))
print (base_dir)

效果:

案例3:程序中常和sys结合使用,自动添加目录

案例4:os.rename('oldname','new')#重命名文件/目录

如果和程序在同一个目录,可以直接写文件名,如果不在同一目录,需要制定详细的路径。

案例5:os.chdir("dirname") 改变当前脚本的工作目录,相当于shell下的cd

2、SYS模块

    sys模块则是python程序用来请求解释器行为的接口。比如关于调试类的(trace, frames,except)等,profiling类(stats, getsizeof),运行时环境类(python path, stderr, stdout),解释器本身(如version)。inspect某种程度上可以看成是在sys提供的功能上的一个包装。

案例1:命令行参数List,第一个元素是程序本身路径,sys.argv[0]为脚本名称

import sys

print(sys.argv)

结果:

['C:/Users/.../PycharmProjects/study2017/s2.py']

案例2:返回python解释程序的版本信息

print(sys.version)

3.5.1 (v3.5.1:37a07cee5969, Dec  6 2015, 01:54:25) [MSC v.1900 64 bit (AMD64)]

案例3:模块查找目录优先级。

sys.path是python的搜索模块的路径集,是一个list

import sys
for item in sys.path:
print(item)

查找优先级:

案例4:假设s2不在系统的目录,则可以先添加,再导入s2文件:

import sys
sys.path.append('D:\')#导入D盘文件夹
import s2#文件名

使用sys.path.append(path)添加相关的路径,但在退出python环境后自己添加的路径就会自动消失!

如果需要更好地控制输出,而print 不能满足你的要求,则可使用标准的写入写出的功能;sys.stdout.write(),sys.stdout.flush()。

案例5:进度条案例:会显示1%一直变到100%

import time
import sys
def view_bar(num,total):
    rate=num/total
    rate_num=int(rate*100)
#d='r%d%%'%(rate_num,)#r代表重新回到当前行的首个位置,需要和时间停留配合使用,要么时针会有错,显示为一直变的数字,如17%
    d='r%s>%d%%'%("="*num,rate_num)#如果是此语句,则显示方式可以为=================>17%
   sys.stdout.write(d)
    sys.stdout.flush()

if __name__=='__main__':
for i in range(0,101):
        time.sleep(0.5)
        view_bar(i,100)

效果:

一直到100%

1、自定义模块

os模块主要对操作系统进行调用的接口

2、内置模块

一、os模块常用方法和属性

3、开源模块

  • os.getcwd()  获取当前工作目录,即当前python脚本工作的目录路径
  • os.chdir("d:")  改变当前脚本工作目录;相当于shell下cd
  • os.system("bash command")     运行shell命令,直接显示
  • os.curdir  返回当前目录: ('.')
  • os.pardir  获取当前目录的父目录字符串名:('..')
  • os.mkdir('dirname')  创建一个文件夹。如果此文件夹存在则创建失败
  • os.rmdir('dirname')   删除单级空目录,如果此目录不为空则抛出异常
  • os.listdir('dirname')    列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印,例如:

    #!/usr/bin/python3 # -- coding:utf-8 --

    import os

    print(os.listdir(os.getcwd()))

os

  结果:['a', 'hello.py', 'nametuple.py', 'seriale.py', 'stringFormat.py', 'xx.py', 'zz.py', '__init__.py']

用于提供系统级别的操作

os.getcwd() 获取当前工作目录,即当前python脚本工作的目录路径
os.chdir("dirname") 改变当前脚本工作目录;相当于shell下cd
os.curdir 返回当前目录: ('.')
os.pardir 获取当前目录的父目录字符串名:('..')
os.makedirs('dirname1/dirname2') 可生成多层递归目录
os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推
os.mkdir('dirname') 生成单级目录;相当于shell中mkdir dirname
os.rmdir('dirname') 删除单级空目录,若目录不为空则无法删除,报错;相当于shell中rmdir dirname
os.listdir('dirname') 列出指定目录下的所有文件和子目录,包括隐藏文件,并以列表方式打印
os.remove() 删除一个文件
os.rename("oldname","newname") 重命名文件/目录
os.renames()
os.stat('path/filename') 获取文件/目录信息
os.sep 输出操作系统特定的路径分隔符,win下为"",Linux下为"/"
os.linesep 输出当前平台使用的行终止符,win下为"tn",Linux下为"n"
os.pathsep 输出用于分割文件路径的字符串
os.name 输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
os.system("bash command") 运行shell命令,直接显示
os.environ 获取系统环境变量
os.path.abspath(path) 返回path规范化的绝对路径
os.path.split(path) 将path分割成目录和文件名二元组返回
os.path.dirname(path) 返回path的目录。其实就是os.path.split(path)的第一个元素
os.path.basename(path) 返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
os.path.exists(path) 如果path存在,返回True;如果path不存在,返回False
os.path.isabs(path) 如果path是绝对路径,返回True
os.path.isfile(path) 如果path是一个存在的文件,返回True。否则返回False
os.path.isdir(path) 如果path是一个存在的目录,则返回True。否则返回False
os.path.join(path1[, path2[, ...]]) 将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
os.path.getatime(path) 返回path所指向的文件或者目录的最后存取时间
os.path.getmtime(path) 返回path所指向的文件或者目录的最后修改时间

  • os.remove('dirname')  删除一个文件,如果此文件不存在则抛出异常
  • os.rename("oldname","newname")    重命名文件或者目录
  • os.stat('path/filename')   获取文件或者目录信息,并返回一个对象
  • os.sep    输出操作系统特定的路径分隔符,win下为"",Linux下为"/"
  • os.linesep      输出当前平台使用的行终止符,win下为"tn",Linux下为"n"
  • os.pathsep     输出用于分割文件路径的字符串 win下为";"
  • os.name         输出字符串指示当前使用平台。win->'nt'; Linux->'posix'
  • os.environ      获取系统环境变量
  • os.path.abspath(path)   返回path规范化的绝对路径
  • os.path.split(path)   将path分割成目录和文件名二元组返回
  • os.path.dirname(path)    返回path的目录。其实就是os.path.split(path)的第一个元素
  • **os.path.basename(path)   返回path最后的文件名。如何path以/或结尾,那么就会返回空值。即os.path.split(path)的第二个元素
  • os.path.exists(path)   如果path存在,返回True;如果path不存在,返回False
  • os.path.isabs(path)   如果path是绝对路径,返回True
  • os.path.isfile(path)   如果path是一个存在的文件,返回True。否则返回False
  • os.path.isdir(path)   如果path是一个存在的目录,则返回True。否则返回False
  • os.path.join(path1[, path2[, ...]])  将多个路径组合后返回,第一个绝对路径之前的参数将被忽略
  • os.path.getatime(path)   返回path所指向的文件或者目录的最后存取时间
  • os.path.getmtime(path)   返回path所指向的文件或者目录的最后修改时间

sys

用于提供对解释器相关的操作

sys.argv 命令行参数List,第一个元素是程序本身路径
sys.exit(n) 退出程序,正常退出时exit(0)
sys.version 获取Python解释程序的版本信息
sys.maxint 最大的Int值
sys.path 返回模块的搜索路径,初始化时使用PYTHONPATH环境变量的值
sys.platform 返回操作系统平台名称
sys.stdout.write('please:')
val = sys.stdin.readline()[:-1]

time & datetime

时间相关的操作

时间有三种表示方式:
时间戳 1970年1月1日之后的秒,即:time.time()
格式化的字符串 2014-11-11 11:11, 即:time.strftime('%Y-%m-%d')
结构化时间 元组包含了:年、日、星期等... time.struct_time 即:time.localtime()

random

随机数

>>> import random
>>> random.random()
0.5149354050435956
>>> random.random()
0.009944851377738706
>>> random.randint(1, 2)
1
>>> random.randint(1, 2)
2
>>> random.randrange(1, 10)
5
>>> random.randrange(1, 10)
7

随机验证码实例:

>>> import random
>>> check_code = ' '
>>> for i in range(4):
      current = random.randrange(0, 4)
      if current != i:
          temp = chr(random.randint(65, 90))
      else:
          temp = random.randint(0, 9)
      check_code += str(temp)

>>> check_code
'X6BF'

hashlib

用于加密相关的操作,代替了md5模块和sha模块,主要提供 SHA1, SHA224, ### SHA256, SHA384, SHA512 ,MD5 算法

import hashlib

# ######## md5 ########

hash = hashlib.md5()
hash.update('admin')
print hash.hexdigest()

# ######## sha1 ########

hash = hashlib.sha1()
hash.update('admin')
print hash.hexdigest()

# ######## sha256 ########

hash = hashlib.sha256()
hash.update('admin')
print hash.hexdigest()


# ######## sha384 ########

hash = hashlib.sha384()
hash.update('admin')
print hash.hexdigest()

# ######## sha512 ########

hash = hashlib.sha512()
hash.update('admin')
print hash.hexdigest()

#以上加密算法虽然依然非常厉害,但时候存在缺陷,即:通过撞库可以反解。所以,有必要对加密算法中添加自定义key再来做加密。
import hashlib

# ######## md5 ########

hash = hashlib.md5('898oaFs09f')
hash.update('admin')
print hash.hexdigest()

#还不够吊?python 还有一个 hmac 模块,它内部对我们创建 key 和 内容 再进行处理然后再加密

import hmac
h = hmac.new('wueiqi')
h.update('hellowo')
print h.hexdigest()

#不能再牛逼了!!!

copy

浅拷贝
copy.copy()
深拷贝
copy.deepcopy()

shutil

高级的文件、文件夹、压缩包处理

configparser

用于对特定的配置进行操作

logging

用于便捷记录日志且线程安全的模块

shelve

json & pickle

用于序列化的两个模块

  • json,用于字符串 和 python数据类型间进行转换
  • pickle,用于python特有的类型 和 python的数据类型间进行转换
    Json模块提供了四个功能:dumps、dump、loads、load
    pickle模块提供了四个功能:dumps、dump、loads、load
    pickle.dumps将数据通过特殊的形式转换为只有python语言认识的字符串
    pickle.dump将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
    json.dumps将数据通过特殊的形式转换为所有程序语言都认识的字符串
    json.dump将数据通过特殊的形式转换为所有程序语言都认识的字符串,并写入文件
    反序列化为 loads 或 load
>>> data = dict(name='Bob', age=20, score=88)
>>> import pickle
>>> with open('C:/Users/Why Me/Desktop/Lp/dump.txt', 'wb'):
    pickle.dump(data, f)

看看写入的dump.txt文件,一堆乱七八糟的内容,这些都是Python保存的对象内部信息。
当我们要把对象从磁盘读到内存时,可以先把内容读到一个bytes,然后用pickle.loads()方法反序列化出对象,也可以直接用pickle.load()方法从一个file-like Object中直接反序列化出对象。我们打开另一个Python命令行来反序列化刚才保存的对象:

>>> with open('C:/Users/Why Me/Desktop/Lp/dump.txt', 'rb') as f:
    d = pickle.load(f)

>>> d
{'score': 88, 'name': 'Bob', 'age': 20}

Pickle的问题和所有其他编程语言特有的序列化问题一样,就是它只能用于Python,并且可能不同版本的Python彼此都不兼容,因此,只能用Pickle保存那些不重要的数据,不能成功地反序列化也没关系。

如果我们要在不同的编程语言之间传递对象,就必须把对象序列化为标准格式,比如XML,但更好的方法是序列化为JSON,因为JSON表示出来就是一个字符串,可以被所有语言读取,也可以方便地存储到磁盘或者通过网络传输。JSON不仅是标准格式,并且比XML更快,而且可以直接在Web页面中读取,非常方便。

JSON表示的对象就是标准的JavaScript语言的对象,JSON和Python内置的数据类型对应如下:
JSON类型 Python类型
{} dict
[] list
"string" str
1234.56 int或float
true/false True/False
null None

>>> import json
>>> d = dict(name='Bob', age=20, score=88)
>>> data = json.dumps(d)
>>> data
'{"score": 88, "name": "Bob", "age": 20}'
>>> json.loads(data)
{'score': 88, 'name': 'Bob', 'age': 20}

编辑:服务器运维 本文来源:时间有三种表示方式,一、os模块常用方法和属性

关键词:

  • 上一篇:没有了
  • 下一篇:没有了