Python 当前工作目录的路径

获取程序运行的工作目录。

  • 当前工作目录的相对路径
    os.curdir,是个常量,Unix-like 系统下是 .

  • 当前工作目录的绝对路径
    os.getcwd()os.path.abspath(os.curdir)

  • 当前工作目录的上级(父)目录的路径
    os.path.dirname(os.getcwd())

Python 获取当前程序脚本文件的路径

当前脚本/模块文件的路径,使用内置变量 __file__。注意“file”两端是各两个下划线。

当前工作目录,使用 os.getcwd() 方法。

For the directory of the script being run:

import pathlib
pathlib.Path(__file__).parent.resolve()

For the current working directory:

本地预览静态站的几种方法

开发静态网站时,直接用浏览器打开 HTML 文件会遇到跨域限制、相对路径问题等困扰。搭建一个本地 HTTP 服务器是最简单的解决方案。

工具功能特色适用场景
Python http.server系统自带,即开即用快速预览,临时使用
http-server配置丰富,跨域支持开发调试,生产环境测试
live-server热重载,自动刷新开发阶段,实时预览

优势:部分系统自带,无需安装
局限:功能单一,配置有限

Python 创建多级目录(文件夹)

Python 创建文件夹,支持多级目录。

def make_dirs(dir_path):
    # 去除首尾空白符和右侧的路径分隔符
    dir_path = dir_path.strip().rstrip(os.path.sep)

    if dir_path:
        if not os.path.exists(dir_path):  # 如果目录已存在, 则忽略,否则才创建
            os.makedirs(dir_path)

AWS Lambda 为 Python 函数添加部署第三方库依赖项软件包

一种是和系统无相关性的程序包,例如一些纯 Python 代码写的程序包,即在本地开发环境和 Lambda 运行时环境中使用的程序包文件一样。
参见 AWS Lambda 准备无平台相关性的 Python 依赖项软件包

另一种是和系统有相关性的程序包,例如一些软件包根据系统不同,会用到不同的二进制文件。
参见 AWS Lambda 准备有平台相关性的 Python 依赖项程序包 (native code)

AWS Lambda 准备有平台相关性的 Python 依赖项程序包

native code

使用 docker 在 Amazon lambda runtime 环境

mkdir lambda_headless_chrome_python
cd lambda_headless_chrome_python

  • 创建下面的 Dockerfile。

Dockerfile

FROM lambci/lambda:build-python3.6

ENV AWS_DEFAULT_REGION ap-northeast-1
ENV APP_DIR /var/task

ADD . .

CMD pip install -r requirements.txt -t $APP_DIR && \
  zip -9 deploy_package.zip lambda_function.py && \
  zip -r9 deploy_package.zip *
  • 创建 docker 镜像并打包。
docker build -t lambda_headless_chrome .
docker run -v "${PWD}":/var/task lambda_headless_chrome
  • 现在您有一个 zip 文件deploy_package.zip 可以上传到 lambda。

使用 SAM

如果使用了 AWS Chalice 部署项目,且依赖包的体积不大,可以直接使用 Chalice 部署。会自动准备适配 Lambda 环境的依赖包,作为项目代码的一部分,整体压缩打包更新到 Lambda。