【发布时间】:2018-06-27 20:30:16
【问题描述】:
我正在尝试将 CSV 文件分类到标准输出中,然后将打印输出作为输入通过管道传输到 python 程序中,该程序还采用带有 1 个参数的系统参数向量。我遇到了一个我认为与 Python 的 fileinput.input() 函数在占用标准输入文件描述符方面的反应直接相关的问题。
generic_user% cat my_data.csv | python3 my_script.py myarg1
这是一个示例 Python 程序:
import sys, fileinput
def main(argv):
print("The program doesn't even print this")
data_list = []
for line in fileinput.input():
data_list.append(line)
if __name__ == "__main__":
main(sys.argv)
如果我尝试使用上述终端命令且不带参数 myarg1 运行此示例程序,则该程序能够评估和解析标准输入以获取 CSV 文件的数据输出。
如果我使用参数 myarg1 运行程序,它最终会抛出与 myarg1 不作为文件存在直接相关的 FileNotFoundError。
FileNotFoundError: [Errno 2] No such file or directory: 'myarg1'
谁能详细解释一下为什么在 Python 中会发生这种行为以及如何处理逻辑,以便 Python 程序可以在 argv 覆盖标准输入描述符之前首先处理标准输入数据?
【问题讨论】:
-
你在哪里使用 sys.argv?你试过
generic_user% cat my_data.csv | python3 my_script.py吗?
标签: python python-3.x file-io file-descriptor