如何在Python中正确使用os_dir读取CSV文件并获取工作目录?
解决Jupyter环境下获取目录并读取CSV的问题
你得到临时目录的原因是当前在Jupyter Notebook/IPython交互式环境中运行代码——这种环境里,代码不是以独立的.py文件执行的,__file__变量不存在,inspect模块获取到的是IPython内核临时运行文件的路径,自然会输出临时目录。
场景1:获取当前工作目录(推荐Jupyter环境使用)
直接用os.getcwd()获取你打开Jupyter时的初始目录,这也是你通常存放CSV文件的位置:
import os # 获取当前工作目录 current_work_dir = os.getcwd() print(current_work_dir) # 拼接CSV文件路径并读取 csv_filename = "你的文件.csv" csv_path = os.path.join(current_work_dir, csv_filename) # 示例:用内置open读取 with open(csv_path, 'r', encoding='utf-8') as file: csv_content = file.read() # 如果你用pandas读取 import pandas as pd df = pd.read_csv(csv_path)
场景2:兼容脚本文件和Jupyter环境(获取脚本/工作目录)
如果你的代码需要同时在独立.py脚本和Jupyter中运行,可以写一个兼容函数:
import os import inspect def get_target_dir(): # 判断是否为独立脚本运行 if '__file__' in locals(): # 脚本文件所在目录 return os.path.dirname(os.path.abspath(__file__)) else: # Jupyter环境下返回当前工作目录 return os.getcwd() target_dir = get_target_dir() print(target_dir) # 读取CSV csv_path = os.path.join(target_dir, "数据文件.csv") # 后续读取操作同上
额外提示
- 在Jupyter中可以用
os.listdir()查看当前工作目录下的所有文件,确认你的CSV文件确实存在,避免文件名拼写错误(注意:Linux/macOS区分大小写,Windows不区分)。 - 如果CSV文件在子目录里,直接在
os.path.join里添加子目录层级即可,比如os.path.join(target_dir, "data", "file.csv")。
内容的提问来源于stack exchange,提问作者Jess Vannatter
相关产品推荐
相关产品推荐

