发布时间:2022-09-18 18:00
Pycharm中,Package和Directory区别: Package含有
__init__.py
import
执行流程和用法step1. 执行import的文件;
step2. 引入变量名;
step3. 调用 ```module_name.func_name()```;
仅当module路径在sys.path
中时,可直接用import语句调用。
from...import...
用法from module_name import func_name
from package_1.package_2 import module_name
from package_1.package_2.module_name import func_name
from package_name import module_name
sys.path
添加执行文件所在目录,调用下级module需要使用from语句进行调用。 if __name__ == '__main__'
- 用于调用文件测试
- 避免文件被调用时执行主逻辑
time
time.time() # 时间戳,从1970年1月1日0时至今的秒数(Unix诞生)
time.localtime() # 结构化时间(当地)
time.gmtime() # 结构化时间(标准UTC)
time.mktime() # 将结构化时间转换为时间戳
time.strftime("%Y/%m/%d %X", time.localtime()) # 将结构化时间转换为字符串时间
time.strptime("2016/12/24/17/50/36", "%Y/%m/%d/%X") # 将字符串时间转换为结构化时间
time.asctime() # 字符串时间
time.ctime() # 字符串时间
time.sleep() # 暂停
datetime
datetime.datetime.now() # 当前日期时间
random
random.random()
random.randint()
random.randrange()
random.choice()
random.sample()
random.uniform()
random.shuffle()
os
os.getcwd() # 获取当前工作目录
os.chdir() # 改变当前脚本的工作目录
os.makedirs() # 递归生成目录
os.removedirs() # 递归删除目录(只删除空目录)
os.mkdir() # 新建单目录
os.rmdir() # 删除单目录
os.listdir() # 列出指定目录下的所有子文件和目录(包括隐藏)
os.remove() # 删除单文件
os.rename() # 重命名
os.stat() # 文件状态
os.sep # 当前系统路径分隔符
os.linesep # 当前系统的行终止符
os.pathsep # 当前平台的用于分割路径的字符
os.system(command) # 执行命令
os.path.split(path) # 将path 分割成(目录, 文件名)
os.path.dirname() # 路径名
os.path.basename() # 文件名
os.path.exist() # 判断路径是否存在
os.path.isabs() # 是否是绝对路径
os.path.isfile() # 是否是文件
os.path.isdir() # 是否是目录
os.path.join() # 拼接路径
os.path.getatime() # 文件或目录最后的存取时间
os.path.getmtime() # 文件或目录的最后修改时间
os.path.abspath() # 绝对路径
os.path.dirname() # 所属文件夹路径
sys
sys.argv # 获取命令,返回list
sys.stdout.write() # 向屏幕输出
sys.path
sys.exit(n) # 退出
sys.version # 返回Python版本
sys.maxint # 最大的int值
sys.platform # 返回操作系统平台名称
json
json.dumps() # 写入
json.loads() # 读取
json.dump() # 文件操作写入
json.load() # 文件操作读取
# 数据结构中必须使用双引号。
pickle
pickle.dumps()
pickle.loads()
# pickle后的内容不可读,对文件需要使用二进制模式读写。
# 支持的数据类型较json多。
shelve
shelve.open()
# 生成三个文件。
xml
import xml.etree.ElementTree as ET
obj = ET.parse("file.xml")
root = obj.getroot() # 获取根节点
print(root.tag) # 获取标签名
for i in root:
for j in i.iter('year'): # 选择'year'节点
print(j.attrib) # 获取属性值
print(j.text) # 获取文本内容
new_year = int(j.text)+1
j.text = str(new_year) # 修改文本内容
j.set("attribute", "value") # 设置属性
obj.write("file.xml") # 重新写入
for country in root.findall("country"): # 找到所有country标签
rank = int(country.find("rank").text) # 找到rank标签
if rank > 50:
root.remove(country)
obj = ET.Element('root_node')
name = ET.SubElement(obj, 'node_name', attrib={'attr_name':'value'})
xml_obj = ET.ElementTree(obj) # 生成文档对象
obj.write("file_name", encoding='', xml_declaration=True)
re
r # 原生字符 (raw string),避免Python解释器对规则进行转义。
re.findall() # 返回列表
re.search() # 从任意位置开始查找,返回对象
re.match() # 从起始位置开始查找,返回对象
re.split() # 分割,返回列表
re.sub() # 替换,返回替换后的字符串
re.subn() # 替换并显示替换次数,返回元组
re.finditer() # 效果与findall相同,返回iterator
group() # 用于获取match/search对象中的数据
logging
import logging
logging.basicConfig(
level=logging.DEBUG, # 设置默认级别
filename='file_name', # 设置目标输出位置(文件)
filemode='w', # 更改文件打开方式(默认为a)
format='%(asctime)s [%(lineno)d] %(message)s'
)
# 日志级别
logging.debug('debug message')
logging.info('info message')
logging.warning('warning message') # 默认从warnning级别开始打印
logging.error('error message')
logging.critical('critical message')
logger = logging.getLogger() # 创建logger对象
fh = logging.FileHandler() #
ch = logging.StreamHandler() #
fm = loggign.Formatter('%(asctime)s')
fh.setFormatter(fm)
ch.setFormatter(ch)
logger.addHandler(fh)
logger.addHandler(ch)
logger.setLevel('DEBUG')
logger.debug()
logger.info()
logger.warning()
logger.error()
logger.critical()
configparser
import configparser
config = configparser.ConfigParser() # 实例化config对象
···
with open('file_name', 'w') as f:
config.write(f) # 注意调用方式
config.read('file_name')
config.options() # 返回列表
config.items() # 返回键值对
config.get('key1', 'key2') # 获取对应的值
config.write(open()) # 写入文件
config.add_section('') # 新增块
config.set('section', 'key', 'value') # 在section下添加键值对
hashlib
import hashlib
obj = hashlib.md5('salt'.encode('uf8'))
obj.update('string'.encode('utf8'))
print(obj.hexdigest()) # 位数固定