【问题标题】:Python: get name of file piped to stdinPython:获取通过管道传输到标准输入的文件名
【发布时间】:2021-03-11 20:49:29
【问题描述】:

我有一个 python 程序,它从标准输入读取输入(必需),并从标准输入处理行:

for lines in stdin:
     #do stuff to lines
     filename = #need file name
     #example print
     print(filename)

但是,在这个 for 循环中,我还需要像这样获取已通过管道传输到这个 python 程序的文件的名称:

cat document.txt | pythonFile.py #should print document.txt with the example print

有没有办法做到这一点?

【问题讨论】:

  • 当您可以将文档文件作为参数传递给脚本时,您能否提供更多信息,说明为什么要将文件名通过管道传递给 python 脚本?
  • @RushikeshGaidhani 这是学校作业的一部分。说明告诉我们必须从标准输入获取输入。

标签: python filenames stdin


【解决方案1】:

不,这是不可能的。作为管道的接收端,您不知道数据流的来源。使用cat 进一步混淆了它,但即使你写./pythonFile.py < document.txt 你也没有任何线索。

许多 unix 工具接受文件名作为参数,- 作为“stdin”的特殊代码。你可以用同样的方式设计你的脚本,所以它可以被称为

  • cat document.txt | pythonFile.py - (您的脚本不知道输入来源)
  • ./pythonFile.py document.txt(您的脚本确实知道该文件)

【讨论】:

  • 使用cmd < file 可以从/proc/self/fd/0 确定文件,但显然这是仅适用于Unix 的解决方案。
  • @ypnos 好的,感谢您的帮助和信息!
猜你喜欢
  • 2020-02-12
  • 1970-01-01
  • 1970-01-01
  • 2022-07-05
  • 2015-01-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多