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

如何用sys.argv访问两个文件?为何仅返回最后一个文件filename2.csv?

问题分析与解决

首先明确:sys.argv[1:]本身就是存储所有命令行传入参数的列表,只要执行脚本时正确传入两个文件名,它就会包含两个元素。你只拿到最后一个文件,大概率是以下某个原因:

可能的错误原因

  • 命令行传参错误:执行脚本时只传入了一个文件名,比如你跑的是python your_script.py filename2.csv,正确的传参方式应该是python your_script.py filename1.csv filename2.csv
  • 代码处理错误:你可能在脚本里对sys.argv[1:]做了错误的赋值操作,比如写了类似for i in sys.argv[1:]: arr = i的代码——循环结束后arr只会保留最后一次循环的元素,也就是最后一个文件名
  • 文件名含空格未加引号:如果文件名里有空格,比如filename 1.csv,传参时没加引号会被系统拆分成多个参数,但这种情况通常会拿到多个片段,而非最后一个完整文件名,可能性较低

正确用法示例

把代码改成这样,就能正确获取并输出所有传入的文件参数:

import sys

# 获取所有命令行传入的文件参数(排除脚本自身名称)
arr = sys.argv[1:]

for i in arr:
    sys.stdout.write(i + '\n')

验证方法

如果还是不确定问题所在,可以先打印sys.argv的完整内容,看看参数到底传进来了多少:

import sys
print(sys.argv)

执行脚本后,输出里的列表元素就是所有传入的参数,能直观看到问题出在哪。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.14 08:32:11