【问题标题】:Pass range of files to stdin in Python在 Python 中将文件范围传递给标准输入
【发布时间】:2012-06-05 07:07:17
【问题描述】:

我在同一目录中有一个系统命名的文件列表,例如。 'test01.ext','test02.ext','test03.ext'...'test99.ext'。我想在 Python 中将一定范围的这些文件传递给一个循环。但是,我希望能够确定我想在命令行中循环哪些文件,例如。 'test45.ext''test62.ext'。我该怎么做?

目前我正在使用以下代码:

for fname in sys.stdin :
   Some_loop(fname)

当出现提示时,我将如何选择(无需手动输入从例如 45 到 62 的所有文件)一系列文件? 谢谢!

【问题讨论】:

  • 这看起来像一个脚本。如果只针对一种文件名,可以硬核文件名,输入数字范围代替。
  • 是的,这是一个更好的解决方案(见下文) - 我之前不知道如何处理文件名中的 00001...99999 循环。感谢您这么快的回复!
  • 首先定义你的界面。您究竟想在命令行上键入什么内容,以及应该打开哪些文件?

标签: python loops terminal command stdin


【解决方案1】:
files = sys.stdin.splitlines()
for n in range(start,end):
  fname = 'test%02d.ext' % (n,)
  if fname in files:
    some_loop(fname)

【讨论】:

    【解决方案2】:

    切片文件列表:

    >>> a =  [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
    >>> a[4:6]
    [5, 6]
    

    您可能需要事先.split('\n')您的文件列表。

    【讨论】:

    • 谢谢,快速回答,但有两个问题:(1)我知道数字的范围,但如何将其传递给终端中的标准输入? (2) 我实际上有超过 100 个文件,那么我将如何处理前面的零?例如。对于 44 到 290 的范围,即。 text00044.ext 到 text00290.ext?
    猜你喜欢
    • 1970-01-01
    • 2018-11-28
    • 1970-01-01
    • 2011-02-26
    • 1970-01-01
    • 2015-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多