"""第 2 天学生练习：工作目录、文件路径与模块位置。

准备：
- 本文件旁边应有 data/销售示例.csv。
- 分别从“本文件所在目录”“上一级目录”和其他目录运行本文件。
- 每次记录 cwd、相对路径解析结果和文件是否存在。
"""

from pathlib import Path
import sys

import pandas as pd


print("=" * 64)
print("一、运行环境")
print("Python：", sys.executable)
print("cwd：", Path.cwd())
print("脚本文件：", Path(__file__).resolve())
print("脚本目录：", Path(__file__).resolve().parent)
print("sys.path[0]：", sys.path[0])
print("pandas 版本：", pd.__version__)
print("pandas 位置：", pd.__file__)


print("\n二、比较两种数据路径")

# 相对路径：从 cwd 开始解析。
relative_data_file = Path("data") / "销售示例.csv"

# 脚本锚定路径：从当前 .py 文件所在目录开始解析。
script_dir = Path(__file__).resolve().parent
anchored_data_file = script_dir / "data" / "销售示例.csv"

print("相对路径写法：", relative_data_file)
print("相对路径解析：", relative_data_file.resolve())
print("相对路径存在：", relative_data_file.exists())

print("脚本锚定路径：", anchored_data_file)
print("锚定路径存在：", anchored_data_file.exists())


print("\n三、读取文件")

if relative_data_file.exists():
    relative_df = pd.read_csv(relative_data_file, encoding="utf-8-sig")
    print("相对路径读取成功，行数：", len(relative_df))
else:
    print("相对路径读取失败：当前 cwd 下没有 data/销售示例.csv")

if not anchored_data_file.exists():
    raise FileNotFoundError(f"练习数据缺失：{anchored_data_file}")

anchored_df = pd.read_csv(anchored_data_file, encoding="utf-8-sig")
print("脚本锚定路径读取成功：")
print(anchored_df)


# TODO 1：在下面两行注释中写出 PowerShell 查看和切换目录的命令。
# 查看当前目录：
# 切换到脚本目录：

# TODO 2：写出在“第01周”目录运行本文件的终端命令。
# 命令：

# TODO 3：计算“销售额”列，公式为“数量 * 单价”。
# anchored_df["销售额"] = ...

# TODO 4：在脚本目录下建立 outputs 路径，但暂时不要手工写反斜杠。
# output_dir = ...

# TODO 5：使用 mkdir(parents=True, exist_ok=True) 创建输出目录。

# TODO 6：把结果保存为 outputs/销售结果.csv。
# anchored_df.to_csv(...)

# 实验记录：运行后把结果写在冒号后面的注释中。
# A. 在本文件目录运行时，cwd：
# A. 相对路径是否存在：
# B. 在第01周目录运行时，cwd：
# B. 相对路径是否存在：
# C. 在其他目录用脚本完整路径运行时，cwd：
# C. 相对路径是否存在：

# Notebook 实验：
# 1. 把“运行环境”和“比较两种数据路径”复制到 Notebook。
# 2. 观察 Notebook 中是否存在 __file__。
# 3. 使用 %pwd 查看 cwd，使用 %cd 改变 cwd 后重新检查相对路径。
# 4. 重启内核，从头运行，确认 cwd 和变量状态。
