模块和包、导入、内置模块
tree D:\light_gpt2 > D:a.txt
效果是这样的
├── commons │ ├── __init__.py │ ├── temporary.py │ ├── model.py │ ├── tencent │ └── utils.py ├── data.py └── gpt2.py
__init__.py
文件,描述当前包的信息,如版本号之类,导入包下的模块时,该文件会自动加载。python2必须有这个文件,否则报错,而python3不必有。import sys print(sys.path)
sys.path.append("路径") import module # 导入路径下的一个module.py文件
如在run.py中引用commons中的模块时,需要在sys.path中添加路径
├── commons │ ├── __init__.py │ ├── temporary.py │ ├── model.py │ ├── tencent │ └── utils.py ├── pro │ └── run.py └── gpt2.py
import os import sys # 把当前文件的上2级目录路径加在系统中 sys.path.append(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
from ..commons.utils import utils中的方法
from matplotlib import pyplot as plt import xxx.xxx as xx
# 程序的入口,执行函数。仅定义函数,没有执行函数的.py文件通常不是程序入口 if __name__ == '__main__': start()
pip3 install 模块名称 # 指定版本 pip install numpy==2.2
pip默认到https://pypi.org
下载第三方模块,该网址在国外,下载很慢,可以切换国内镜像源。
pip install 模块名称 -i https://pypi.douban.com/simple/
在配置文件中加入镜像
# 在终端执行如下命令加入豆瓣源,以后就默认到豆瓣源上找模块并安装 pip3.9 config set global.index-url https://pypi.douban.com/simple/
阿里云:http://mirrors.aliyun.com/pypi/simple/
中国科技大学:https://pypi.mirrors.ustc.edu.cn/simple/
清华大学:https://pypi.tuna.tsinghua.edu.cn/simple/
中国科学技术大学:http://pypi.mirrors.ustc.edu.cn/simple/
#Windows系统: C:\Python39\Lib\site-packages\
python setup.py build python setup.py install
pip install xxxx.whl
present_path = os.path.abspath(__file__) print(present_path)
import os # 当前文件的上级目录 present_path = os.path.dirname(__file__) print(present_path) # 当前文件的上上级目录(文件夹) parent_dir = os.path.dirname(os.path.dirname(__file__)) print(parent_dir)
import os # 当前文件的上级目录 当前file的路径是E:/light_gpt2 present_path = os.path.dirname(__file__) print(present_path) # E:/light_gpt2 path1 = os.path.join(present_path, '文件夹2') print(path1) # E:/light_gpt2\文件夹2 path2 = os.path.join(present_path, '文件夹1', '文件夹2', '美食.jpg') print(path2) # E:/light_gpt2\文件夹1\文件夹2\美食.jpg
import os path2 = os.path.exists(r'E:/light_gpt2') print(path2)
import os path1 = "E:/light_gpt2" # 判断文件夹是否存在,若不存在,则创建 path2 = os.path.join(path1, '文件夹1', '文件夹2') if not os.path.exists(path2): os.makedirs(path2)
import os present_path = os.path.dirname(__file__) file1 = os.path.join(present_path, 'aa', 'bb', 'cc.txt') dir_not = os.path.isdir(file1) print(dir_not) # False folder1 = os.path.join(present_path) dir_not2 = os.path.isdir(folder1) print(dir_not2) # True
import os import shutil present_path = os.path.dirname(__file__) path2 = os.path.join(present_path, '文件夹1', 'a.txt') if not os.path.exists(path2): os.makedirs(path2) print("创") if os.path.exists(path2): os.remove(path2) # 删文件 print("删") # if os.path.exists(path2): # shutil.rmtree(path2) # 删文件夹 # print("删")
import os # 以列表形式显示light_gpt2文件夹下所有的文件夹和文件,包括隐藏的,但是不会查看孙辈文件夹及文件 data = os.listdir("E:/light_gpt2") print(len(data)) print(data)
import os # 返回一个生成器 data = os.walk("E:/light_gpt2") print(data) # 返回E:/light_gpt2路径下的所有文件和文件夹 # 返回:E:/light_gpt2路径,本路径下文件夹,本路径下的文件 # 如果文件夹中有文件,依以方式递归展开 for path, folders, files in data: print(path,folders,files) print('*'*50) for file_name in files: file_path = os.path.join(path, file_name) postfix = file_path.rsplit(".",1)[-1] if postfix == "py": # print(file_path) pass
shutil.rmtree(path2)
import os import shutil present_path = os.path.dirname(__file__) path1 = os.path.join(present_path, '海边') path2 = os.path.join(present_path, '文件夹1') # 把path2内的东西拷到path1中 shutil.copytree(path2, path1)
import os import shutil present_path = os.path.dirname(__file__) file1 = os.path.join(present_path, '文件夹1','海边.jpg') file2 = os.path.join(present_path, '文件夹1','2.jpg') # 把file1复制并重新命名到file2 shutil.copy(file1, file2)
import os import shutil present_path = os.path.dirname(__file__) file1 = os.path.join(present_path, '文件夹1','海边.jpg') file2 = os.path.join(present_path, '文件夹1','2.jpg') # 把file1重命名为file2 shutil.move(file1, file2)
import os import shutil present_path = os.path.dirname(__file__) file1 = os.path.join(present_path, '文件夹1') file2 = os.path.join(present_path, '文件夹2') # 把文件夹folder1重命名为folder2 shutil.move(file1, file2)
import os import shutil present_path = os.path.dirname(__file__) file2 = os.path.join(present_path, '文件夹2') # base_name,压缩后的压缩包文件 # format,压缩的格式,例如:"zip", "tar", "gztar", "bztar", or "xztar". # root_dir,要压缩的文件夹路径 shutil.make_archive(base_name=r'condense',format='zip',root_dir=file2)
import shutil # filename,要解压的压缩包文件 # extract_dir,解压的路径 # format,压缩文件格式 shutil.unpack_archive(filename=r'condense.zip', extract_dir=r'E:\light_gpt2\海边', format='zip')
sys.version sys.version_info sys.version_info.major sys.version_info.minor sys.version_info.micro sys.path
以列表形式接收参数
命令行中运行角本时输入一些参数,这些参数被argv接收。
# test.py及之后的参数被argv以列表形式接收 python test.py
import random a = random.randint(1, 30) print(a)
import random a = random.uniform(1, 30) print(a)
import random a = random.choice([78, 85, 36, 24, 99]) print(a)
import random a = random.sample([78, 85, 36, 24, 99], 2) print(a)
import random a1 = [78, 85, 36, 24, 99] random.shuffle(a1) print(a1)
import hashlib # 加把盐 encryption = hashlib.md5("sdbtedfdf".encode('utf-8')) encryption.update("张三".encode('utf-8')) res = encryption.hexdigest() print(res)
+-------------------+---------------+ | Python | JSON | +===================+===============+ | dict | object | +-------------------+---------------+ | list, tuple | array | +-------------------+---------------+ | str | string | +-------------------+---------------+ | int, float | number | +-------------------+---------------+ | True | true | +-------------------+---------------+ | False | false | +-------------------+---------------+ | None | null | +-------------------+---------------+
import json python_data = [ {"id": 1, "name": "武大", "age": 3}, {"id": 2, "name": "熊二", "age": 2}, ] results = json.dumps(python_data) print(results) # [{"id": 1, "name": "\u6b66\u5927", "age": 3}, {"id": 2, "name": "\u718a\u4e8c", "age": 2}] results = json.dumps(python_data, ensure_ascii=False) print(results) # [{"id": 1, "name": "武大", "age": 3}, {"id": 2, "name": "熊二", "age": 2}]
import json data_json = '[{"id": 1, "name": "武大", "age": 3}, {"id": 2, "name": "熊二", "age": 2}]' data_python = json.loads(data_json) print(data_python)
import json from decimal import Decimal from datetime import datetime dic1 = [ {"id": 1, "name": "熊大", "age": 3, 'height': Decimal("20.36"), 'date': datetime.now()}, {"id": 2, "name": "熊二", "age": 4, 'height': Decimal("15.65"), 'date': datetime.now()}, ] class MyJSONEncoder(json.JSONEncoder): def default(self, o): if type(o) == Decimal: return str(o) elif type(o) == datetime: return o.strftime("%Y-%M-%d") return super().default(o) json_data = json.dumps(dic1, cls=MyJSONEncoder,ensure_ascii=False) print(json_data)
json.dumps | 序列化生成一个字符串 |
json.loads | 序列化生成python数据类型 |
json.dump | 数据序列化并写入文件 |
json.load | 读取文件中的数据并反序列化为python的数据类型 |
import json dic1 = [ {"id": 1, "name": "熊大", "age": 3}, {"id": 2, "name": "熊二", "age": 4} ] file1 = open('xxx.json', mode='w', encoding='utf-8') json.dump(dic1, file1) file1.close()
import json file1 = open('xxx.json', mode='r', encoding='utf-8') data = json.load(file1) print(data) file1.close()
UTC/GMT:世界时间
本地时间:本地时区的时间
import time # 时间戳自1970-1-1 00:00 a1 = time.time() print(a1) # 时区,秒数, a2 = time.timezone print(a2/60/60) #东八区 print("睡3秒") # 睡3秒,再执行 time.sleep(3) print("醒了")
from datetime import datetime, timezone, timedelta time_1 = datetime.now() # 当前本地时间 print(time_1) tz = timezone(timedelta(hours=8)) # 东8区时间 print(tz) time_2 = datetime.now(tz) print(time_2) time_3 = datetime.utcnow() # 当前UTC时间 print(time_3)
from datetime import datetime, timedelta time_1 = datetime.now() print(time_1) # timedelta参数设置天等进行加减 time_2 = time_1 + timedelta(days=88, minutes=9) print(time_2)
在这里插入代码片
from datetime import datetime, timedelta # 字符串格式的时间 ---> datetime格式时间 text = "2022-2-2" time_1 = datetime.strptime(text,'%Y-%M-%d') # %Y 年,%m,月份,%d,天。 print(time_1) # datetime格式时间 ----> 字符串格式的时间 time_2 = datetime.now() time_al = time_2.strftime("%Y-%m-%d %H:%M:%S") print(time_al)
import time from datetime import datetime, timedelta # time格式 --> datetime格式 time_1 = time.time() print(time_1) datetime1 = datetime.fromtimestamp(time_1) print(datetime1) print("*"*50) # datetime格式 ---> time格式 datetime2 = datetime.now() print(datetime2) time_2 = datetime2.timestamp() print(time_2)