如何用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
相关产品推荐
相关产品推荐

