You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在不同目录运行Python脚本并访问当前执行目录下的文件(附问题示例)

问题分析与解决方案

你的两个问题其实根源是同一个:代码错误地用脚本文件的所在目录定位目标文件,而非你执行脚本时的当前工作目录。

问题根源

os.path.dirname(__file__) 返回的是 fruit.py 脚本本身的所在目录(也就是 /1/Python/),不是你运行脚本时身处的 summer 或 winter 目录。这就导致:

  • 当你在 summer 目录执行外部的 fruit.py 时,代码会去 /1/Python/ 找 .txt 文件,自然找不到
  • 只有把脚本放到 summer/winter 目录时,__file__ 的目录和当前工作目录重合,才能正常找到文件

解决方案

用 os.getcwd() 替代 os.path.dirname(__file__),这个函数会返回你执行脚本时所在的当前工作目录,也就是你需要访问 .txt 文件的目录。

修改后的代码

#! /usr/bin/python
import glob
import os
import csv
....
for name in glob.glob("*.txt"):
    # 改动1:用当前工作目录替代脚本所在目录
    target_path_1 = os.path.join(os.getcwd(), name)
    txt_file = open(target_path_1,"r")
    ipaddr = raw_input("Enter IP address: ")
    fname = (name.replace(".txt","_"))+(ipaddr+".csv")
    # 改动2:同样用当前工作目录保存CSV文件
    target_path_2 = os.path.join(os.getcwd(), fname)
    csv_file = open(target_path_2,"w")
    writer = csv.writer(csv_file)
    ....
    csv_file.close()
    txt_file.close()

额外说明

  • 不管你是在 summer/winter 目录里直接运行脚本,还是用绝对路径(比如 /1/Python/fruit.py)在这些目录执行,os.getcwd() 都会正确指向当前的 summer/winter 目录
  • 如果你的脚本需要同时访问脚本自身目录的文件和当前工作目录的文件,可以同时保留 os.path.dirname(__file__) 和 os.getcwd(),按需使用

内容的提问来源于stack exchange,提问作者Jay Patel

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 06:42:45