Python基础18-常用模块之os、sys、json、pickle、shelve、xml、re、logging、configparse、hashlib等

目录

os、os.path

sys

json

pickle、shelve、xml、re、logging、configparse、hashlib未完待续……


 

 

os、os.path

Python的os模块里面定义了常用的路径、文件操作。

os.curdir  # curdir相对路径的当前路径“点”
os.pardir  # pardir相对路径的父目录“点点”。
os.sep  # sep适应操作系统的路径分隔符,对于windows是“\”,对于*nix是“/”。
os.linesep  # linesep适应操作系统的换行符,对于windows是“\r\n”,对于linux是“\n”。
os.pathsep  # pathsep适应于操作系统的分割路径的符号,对于windows是分号“;”,对于linux是冒号“:”。
import os

# 获取绝对路径
abspath = os.path.abspath(__file__)
print(abspath)
# 获取路径中的路径
print(os.path.dirname(abspath))
# 获取路径中文件名
print(os.path.basename(abspath))

# 获取当前工作目录路径
print(os.getcwd())

# 路径拼接,当获取到两个路径片段时,进行拼接
cvdir = os.path.join(os.pardir, 'cv_work')
# 切换路径
os.chdir(cvdir)
os.chdir(os.pardir + os.sep + 'day22')

# 创建目录
os.makedirs('dir1/dir2')
# 删除目录,直到遇见不为空的目录
os.removedirs('dir1/dir2')

# 获取当前目录下所有的目录名和文件名
ld = os.listdir(os.curdir)
for i in ld:
    if os.path.isabs(i):
        print('--', i, 'is abs path')
        pass
    if os.path.isdir(i):
        print('--', i, 'is a direcory')
        pass
    if os.path.isfile(i):
        print('--', i, 'is a file')

# 文件的元数据
print(os.stat('day22_os.py'))

# 文件的元数据
print(os.stat('day22_os.py'))

# 获取环境变量
for k, v in os.environ.items():
    print(k, v)

sys

sys里面记住sys.argv,用于接收命令行参数,是一个列表。列表的sys.argv的0位置是Python脚本本身,用户输入参数从sys.argv列表1位置开始。

sys.path在上一篇博客里面讲了,用来加入BASE_DIR。

import sys

print(sys.argv)
# C:\dev\day22>python day22_sys.py test abc 123
# ['day22_sys.py', 'test', 'abc', '123']

print(sys.path)
# ['C:\\dev\\day22', 'C:\\dev', 'C:\\Python36\\python36.zip', 'C:\\Python36\\DLLs', 'C:\\Python36\\lib', 'C:\\Python36', 'C:\\Python36\\lib\\site-packages', 'C:\\Program Files\\JetBrains\\PyCharm 2018.3.5\\helpers\\pycharm_matplotlib_backend']

json

用作数据交换的模块。我们可以用json、pickle、xml做数据交换。json牛逼就在与可以在不同语言的数据类型之间做交换。json转换都干了些啥呢?json将任意数据类型转换成了json字符串,注意是json字符串,不是普通的字符串,这样大家都遵循json字符串的标准读写。

Python的json模块通过json.dumps和json.loads进行任意数据类型和json字符串之间的转换,这两个接口比较灵活,推荐使用。另外两个不带s的接口json.dump和json.load因为不能灵活操作,不推荐使用。

import json

# python 任意数据类型
dic = {'db': 'mysql'}
i = 8888
s = 'oracle'
nums = ['linux', 22, True]
print('python-dic', type(dic), dic)
print('python-int', type(i), i)
print('python-str', type(s), s)
print('python-list', type(nums), nums)
# python-dic <class 'dict'> {'db': 'mysql'}
# python-int <class 'int'> 8888
# python-str <class 'str'> oracle
# python-list <class 'list'> ['linux', 22, True]


# 转换成json字符串
json_data1 = json.dumps(dic)  # {'db': 'mysql'}--->{"db": "mysql"}--->'{"db": "mysql"}'
json_data2 = json.dumps(i)  # 8888---> "8888"
json_data3 = json.dumps(s)  # 'oracle'---> "oracle"
json_data4 = json.dumps(nums)  # ['linux', 22, True]--->["linux", 22, True]--->'["linux", 22, True]'
print(type(json_data1), json_data1)
print(type(json_data2), json_data2)
print(type(json_data3), json_data3)
print(type(json_data4), json_data4)
# 注意字符串的单引号都变成了双引号,这是json字符串的规范
# <class 'str'> {"db": "mysql"}
# <class 'str'> 8888
# <class 'str'> "oracle"
# <class 'str'> ["linux", 22, true]



# 先写入json字符串,再读取出来
# dumps得到json字符串
# loads得到原来的数据类型
f_write = open('json_data', 'w')
f_write.write(json.dumps(dic))
f_write.close()

f_read = open('json_data', 'r')
load_data = json.loads(f_read.read())
print(type(load_data), load_data)
f_read.close()
# <class 'dict'> {'db': 'mysql'}

pickle、shelve、xml、re、logging、configparse、hashlib未完待续……

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

苦行僧(csdn)

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值