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

使用argparse读取命令行参数时路径间出现换行符问题求助

问题:拼接命令行参数路径时出现换行符导致路径拆分

我使用Python的argparse库读取命令行参数处理文件,拼接文件夹路径与文件名时,两者间被自动添加换行符(\n),导致输出路径被拆分。

原代码

import argparse
parser = argparse.ArgumentParser(description='modelling') #Description 
parser.add_argument('-f', '--filename', type=str, metavar='', required=True, help='data file name') # file reading 
parser.add_argument('-d', '--foldername', type=str, metavar='', required=True, help='data folder path') # Folder

args = parser.parse_args() # reading the arguments

if __name__ == '__main__':
    folder_path = args.foldername
    file_path = args.filename
    print("File path: {0}/{1}".format(folder_path, file_path))

执行命令

python test.py -f 'something.txt' -d '/home/Documents/data/processed' 

实际输出

File Location:/home/Documents/data/processed 
/something.txt

期望得到的完整路径:/home/Documents/data/processed/something.txt


解决方法

1. 清理参数中的空白字符

问题大概率是输入参数时不小心混入了换行或空格,直接用.strip()清理参数首尾的空白字符即可:

import argparse

parser = argparse.ArgumentParser(description='modelling')
parser.add_argument('-f', '--filename', type=str, metavar='', required=True, help='data file name')
parser.add_argument('-d', '--foldername', type=str, metavar='', required=True, help='data folder path')

args = parser.parse_args()

if __name__ == '__main__':
    folder_path = args.foldername.strip()
    file_path = args.filename.strip()
    print("File path: {0}/{1}".format(folder_path, file_path))

2. 使用Python内置工具拼接路径(更推荐)

手动拼接路径容易出问题,推荐用os.path.join()或pathlib,它们会自动处理路径分隔符,同时配合.strip()清理参数:

用os.path.join:

import argparse
import os

parser = argparse.ArgumentParser(description='modelling')
parser.add_argument('-f', '--filename', type=str, metavar='', required=True, help='data file name')
parser.add_argument('-d', '--foldername', type=str, metavar='', required=True, help='data folder path')

args = parser.parse_args()

if __name__ == '__main__':
    full_path = os.path.join(args.foldername.strip(), args.filename.strip())
    print("File path:", full_path)

用pathlib(Python3.4+):

import argparse
from pathlib import Path

parser = argparse.ArgumentParser(description='modelling')
parser.add_argument('-f', '--filename', type=str, metavar='', required=True, help='data file name')
parser.add_argument('-d', '--foldername', type=str, metavar='', required=True, help='data folder path')

args = parser.parse_args()

if __name__ == '__main__':
    full_path = Path(args.foldername.strip()) / args.filename.strip()
    print("File path:", full_path)

执行修改后的代码,再运行原命令,就能得到期望的完整路径。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 14:10:46