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

如何向不同目录的Python脚本传递文件路径并优化实现?

优化方案:简化Python脚本的路径处理与调用

针对你的需求,这里有几种更简洁可靠的实现方式,避免手动传递当前目录参数,同时用Python内置模块更稳妥地处理路径:

方案1:自动获取当前执行目录(无需传$(pwd))

利用Python的os.getcwd()可以直接获取脚本执行时的工作目录(也就是你运行python命令所在的x/y/z/),不用手动传递路径参数,简化调用流程。

优化后的脚本代码

import os
import sys

def modify_file_content(content):
    # 这里替换成你的实际内容修改逻辑
    # 示例:将所有"foo"替换为"bar"
    return content.replace("foo", "bar")

if __name__ == "__main__":
    # 获取当前执行目录(即x/y/z/)
    current_work_dir = os.getcwd()
    
    # 输入文件名:从命令行取,默认值设为my_file.txt
    input_filename = sys.argv[1] if len(sys.argv) > 1 else "my_file.txt"
    input_file_path = os.path.join(current_work_dir, input_filename)
    
    # 构造输出路径:基于当前目录的上级目录(x/y/)拼接q/w/e/
    parent_dir = os.path.dirname(current_work_dir)
    output_dir = os.path.join(parent_dir, "q", "w", "e")
    # 确保输出目录存在,不存在则自动创建
    os.makedirs(output_dir, exist_ok=True)
    output_file_path = os.path.join(output_dir, input_filename)
    
    # 读取、修改、写入文件
    with open(input_file_path, 'r', encoding='utf-8') as f:
        original_content = f.read()
    
    modified_content = modify_file_content(original_content)
    
    with open(output_file_path, 'w', encoding='utf-8') as f:
        f.write(modified_content)

调用方式

在x/y/z/目录下直接运行:

# 如果文件名固定为my_file.txt,甚至可以省略参数
python a/b/c/my_script.py

# 或者指定文件名(如果需要处理其他文件)
python a/b/c/my_script.py my_file.txt

方案2:灵活配置输出路径(通用型脚本)

如果需要让脚本支持任意输出目录,可以把输出目录作为命令行参数传入,进一步提升脚本通用性:

修改后的核心代码

if __name__ == "__main__":
    # 检查参数数量
    if len(sys.argv) < 3:
        print("使用方法: python my_script.py <输入文件名> <输出目录>")
        sys.exit(1)
    
    input_filename = sys.argv[1]
    output_dir = sys.argv[2]
    
    current_work_dir = os.getcwd()
    input_file_path = os.path.join(current_work_dir, input_filename)
    
    os.makedirs(output_dir, exist_ok=True)
    output_file_path = os.path.join(output_dir, input_filename)
    
    # 后续读取、修改、写入逻辑同方案1

调用方式

python a/b/c/my_script.py my_file.txt x/y/q/w/e/

优势说明

  • 无需手动传递$(pwd),脚本自动获取当前工作目录,减少命令行参数和人为出错概率
  • 使用os.path模块处理路径,天然支持跨平台(Windows/Linux/macOS均可正常运行)
  • 自动创建输出目录,避免因目录不存在导致的写入失败
  • 代码结构清晰,便于后续扩展修改,比bash函数的字符串解析更可靠稳定

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.07 05:30:46