经常使用模块2

 

1、os模块

os模块提供了不少容许你的程序与操做系统直接交互的功能。node

os.getcwd() : 获得当前的工做目录,即当前Python脚本工做的目录路径
os.listdir() : 返回指定目录下的全部文件和目录名
os.remove() : 函数用来删除一个文件
os.removedirs(r"c:\python") :删除多个目录
os.path.isfile() :检测给出的路径是不是一个文件
os.path.isdir():检验给出的路径是不是一个目录
os.path.isabs():检验给出的路径是不是绝对路径
os.path.exists():检验给出的路径是否存在
os.path.split():返回一个路径的目录名和文件名
os.path.splitext():分离扩展名
os.path.dirname():获取路径名
os.path.abspath():获取绝对路径
os.path.basename():获取文件名
os.system():运行shell命令
os.getenv("HOME"):读取操做系统环境变量HOME的值
os.environ:返回操做系统全部的环境变量。至关于env命令
os.environ.setdefault('HOME','/home/alex'):设置系统环境变量,仅程序运行时有效
os.linesep:输出当前平台的行终止符。Windows使用/r/n,Linux和Mac使用/n
os.name:指示你正在使用的平台。nt表示Windows
os.rename(old,new):重命名
os.makedirs(r"c:\python\test"):建立多级目录
os.mkdir("test"):建立单个目录
os.stat(file):获取文件属性
os.chmod(file):修改文件权限与时间戳
##os.exit():终止当前进程
os.path.getsize(filename):获取文件大小
os.path.join(dir,filename) :结合目录名和文件名
os.chdir(dirname):切换目录到dirname
os.get_terminal_size:获取当前终(窗口)端的大小
os.kill(1000,signal.SIGKILL):杀死进程。import signal

>>> import os
>>> os.getcwd()
'G:\\myProject'
>>> os.listdir()
['.idea', 'python', '第一模块章节2', '第二模块章节1', '第二模块章节2']
>>> os.system('ping baidu.com')

���� Ping baidu.com [111.13.101.208] ���� 32 �ֽڵ�����:
���� 111.13.101.208 �Ļظ�: �ֽ�=32 ʱ��=28ms TTL=54

>>> os.linesep
'\r\n'
>>> os.name
'nt'

>>> os.stat('python')
os.stat_result(st_mode=16895, st_ino=562949953421355, st_dev=2625128013, st_nlink=1, st_uid=0, st_gid=0, st_size=0, st_atime=1518417380, st_mtime=1518417380, st_ctime=1517384433)
>>> os.path.join('root','test','t.py')
'root\\test\\t.py'
>>> os.getcwd()
'G:\\myProject'

os-import

2、sys模块

 

sys.argv():传入脚本参数
sys.exit(n):退出程序,正常退出时exit(0)
sys.version:获取Python解释程序的版本信息

>>> sys.version
'3.6.4 (v3.6.4:d48eceb, Dec 19 2017, 06:04:45) [MSC v.1900 32 bit (Intel)]'

>>>sys.maxsize  #最大的int值
2147483647

>>> sys.platform  #返回操做系统平台名称
'win32'

>>> sys.path  #返回模块的搜索路径,初始化时使用Python,path环境变量的值。
['C:\\Program Files\\JetBrains\\PyCharm 2017.3.4\\helpers\\pydev', 'C:\\Program Files\\JetBrains\\PyCharm 2017.3.4\\helpers\\pydev', 

>>> sys.stdin.read()  #从屏幕读取多行??
>? hey
'hey\n'
>>> sys.stdin.readline()  #从屏幕读取一行
>? hey
'hey\n'

>>>sys.getrecursionlimit()  #查看递归层数
1000

>>> sys.setrecursionlimit(1200)  #设置递归层数
>>> sys.getrecursionlimit()
1200
>>> sys.getfilesystemencoding()  #获取内存数据存到文件里的默认编码
'utf-8'

 3、shutil模块

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

shutil.copyfileobj(fsrc,fdst[,length])shell

将文件内容拷贝到另外一个文件中,能够部份内容json

import shutil
f1 = open('经常使用模块.py','r')
f2 = open('changyongmokuai.py','w')
shutil.copyfileobj(f1,f2)
View Code

 shutil.copyfile(src,dst)网络

拷贝文件数据结构

shutil.copymode(src,dst)ide

仅拷贝权限。内容、组、用户均不变函数

shutil.copystat(src,dst)ui

拷贝状态的信息。包括:mode bits,atime,mtime,flags编码

shutil.copy(src,dst)

拷贝文件和权限

shutil.copy2(src,dst)

拷贝文件和权限

shutil.ignore_patterns(*patterns)

shutil.copytree(src,dst,symlinks=False,ignore=None)

递归地去拷贝文件。不拷贝软链接,ignore指定文件

如:shutil.copytree("packages","pack3",ignore=shutil.ignore_patterns("__init__.py","view.py"))

import shutil 
shutil.copytree('packages','pack')
View Code

 

shutil.rmtree(path[,ignore_errors[,onerror]])

递归的删除文件

shutil.move(src,dst)

递归的移动文件

shutil.make_archive(base_name,format,...)

建立压缩包并返回文件路径,例如:zip、tar

  • base_name:压缩包的文件名,也能够是压缩包的路径。只是文件名时,则保存至当前目录
  • format:压缩包种类,"zip","tar"
  • root_dir:要压缩的文件夹路径(默认当前路径)
  • owner:用户,默认当前用户
  • group:组,默认当前组
  • logger:用于记录日志,一般是logging.Logger对象

 

1 #将 /Users/wupeiqi/Downloads/test 下的文件打包放置当前程序目录
2  
3 import shutil
4 ret = shutil.make_archive("wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
5  
6  
7 #将 /Users/wupeiqi/Downloads/test 下的文件打包放置 /Users/wupeiqi/目录
8 import shutil
9 ret = shutil.make_archive("/Users/wupeiqi/wwwwwwwwww", 'gztar', root_dir='/Users/wupeiqi/Downloads/test')
View Code

 shutil对压缩包的处理是调用ZipFile和TarFile两个模块来进行的。

 

import zipfile

# 压缩
z = zipfile.ZipFile('laxi.zip', 'w')
z.write('a.log')
z.write('data.data')
z.close()

# 解压
z = zipfile.ZipFile('laxi.zip', 'r')
z.extractall()
z.close()
View Code

 

import tarfile

# 打包
tar = tarfile.open('your.tar','w')
tar.add('/Users/wupeiqi/PycharmProjects/bbs2.zip', arcname='bbs2.zip')
tar.add('/Users/wupeiqi/PycharmProjects/cmdb.zip', arcname='cmdb.zip')
tar.close()

# 解压
tar = tarfile.open('your.tar','r')
tar.extractall()  # 可设置解压地址
tar.close()
tar打包解压

4、序列化

4.1 json

  • 序列化:序列化是指将内存中的数据类型转化成字符串,以使其能存储到硬盘或者经过网络传输到远程。由于硬盘存储和网络传输只能接受bytes。

json四个方法:

dump:序列化并写入文件

dumps:只是序列化存在内存中

load:反序列化从内存中取出

loads:只是反序列化

import json
data = {
    'roles':[{'role':"monster"},{'role':'hero'}]
}
d = json.dumps(data)  #仅序列化
print(d)
d2 = json.loads(d)
print(d2)
f = open('json_file.json','w')
d = json.dump(data,f)  #序列化并存储到文件
f = open('json_file.json','r')
d2 = json.load(f)
print(d2)
  •  只是把数据类型转化成字符串存到内存里的意义?
  1. 把你的内存数据经过网络共享给远程的其余人
  2. 定义了不一样语言的之间的交互规则:
    1. 纯文本:缺点,不能共享复杂的数据类型
    2. XML:缺点,占空间大
    3. json:简单,可读性好

4.2 pickle

pickle的用法和json彻底相同

json仅支持:str int tuple list dict 数据类型

pickle:支持Python里的全部数据类型。可是只能在Python里使用。

 4.3 shelve

容许屡次dump和load

shellve对pickle进行封装

#_*_coding:utf-8_*_
import shelve
f = shelve.open('shelve.test') #打开一个文件
names = ['pang','chao','cheng']
info = {'name':'alex','age':'22'}
f['names'] = names #持久化列表
f['new_dic'] = info
f.close()  #关闭文件
f = shelve.open('shelve.test')  #再次打开
print(f.items())
print(list(f.keys()))
print(list(f.items()))
print(f.get('names'))  #get方法
print(f['names'][0])   #按索引取值
f['names'] = 'shen' #修改直接整个赋值
f.close()
f = shelve.open('shelve.test')
print(f['names'])

 

5、xml模块

xml是实现不一样语言或程序之间进行数据交换的协议。跟json差很少,但json使用起来更简单。至今还有不少传统公司的接口仍是xml。

xml的格式以下,就是经过<>节点来区别数据结构的。

 

import xml.etree.ElementTree as ET
tree = ET.parse('xml test') #open
root = tree.getroot()  #f.seek(0),root-->data

print(root.tag)
#遍历xml文档
print(dir(root))
for child in root:  #child-->country 子节点
    # print(child)
    print('----',child.tag,child.attrib)  #子节点的tag attib
    for i in child:  # country下的子节点
        print(i.tag,i.text)
#修改
for node in root.iter('year'): #data.iter
    print(node.text) #year.text
    new_year = int(node.text) + 1
    node.text = str(new_year)
    node.set('update','yes')
tree.write('xml test')

#删除node
for country in root.findall('country'):
    rank = int(country.find('rank').text)
    if rank > 50:
        root.remove(country)
tree.write('output.xml')

 6、configparser模块

相关文章
相关标签/搜索