【问题标题】:Running python from windows command prompt on many files在许多文件上从 Windows 命令提示符运行 python
【发布时间】:2012-08-09 16:07:30
【问题描述】:

这是一个愚蠢的问题,我知道它是,但由于某种原因,我找不到任何有用的教程来从 Windows 命令提示符运行 python,所以我不得不问你们。 我有一个脚本,我需要在一个目录中以 FY*.txt 或 WS*.txt 开头的所有文件上运行。我试过通过命令提示符进入目录并做

for file in FY*.txt; do python my_script.py

这只是告诉我“文件”此时是意外的。我也试过了

python my_script.py FY1.txt FY2.txt FY3.txt

import sys
inputfilenames=sys.argv[1:27]

for name in inputfilenames:
    datafile=open(name,'r')

作为我在 python 脚本本身中打开文件的方式。这似乎只在一个文件上运行脚本,而不是所有文件。

我为我的无知道歉,我真的不知道如何使用命令提示符来运行 python 东西。除了答案,如果有人有任何教程建议,我将非常非常感激。

【问题讨论】:

  • 如果您将脚本的第 2 行更改为 inputfilenames=sys.argv[1:],然后打印输入文件名,您会看到一个列表吗?
  • 它不是在打印列表,是吗?
  • 是的,基本上应该。它打印什么?
  • 哦,对不起,我是个白痴(我没有将更改保存到文件中)。它正在打印一个列表!耶!!这样好吗?
  • for /? 可能有用:) for %f in (FY*.txt) do python my_script.pyq %f

标签: python windows directory command-prompt


【解决方案1】:

我不太确定最初的示例应该是什么,但要从标准 Windows 命令提示符执行此操作,您可以使用以下内容:

for %G in (FY*.txt); do python my_script.py %G

如果你做这样的事情,你的代码中需要类似下面的内容:

with open(sys.argv[1], 'r') as f:
    do_something_with(f)

或者,您可以考虑使用fileinput 模块来获取第二个示例中的文件列表并处理它们。也就是说,在你的脚本中,你会有类似的东西:

for line in fileinput.input():
    do_something_with(line)

或者您可以将通配符表达式作为参数并使用glob 模块,这样您就可以运行:

python my_script.py FY*.txt

然后在您的脚本中执行以下操作:

for file in glob.glob(sys.argv[1]):
     with open(file, 'r') as f:
         do_something_to(f)

glob 可以在多个参数上运行:

for files in([glob.glob(arg) for arg in sys.argv[1:]]):
    for file in files:
        with open(file, 'r') as f:
            do_something_to(f)

这将允许您执行:

python my_script FY*.txt WS*.txt

【讨论】:

  • 同时为 %G in (FY*.txt);执行 python my_script.py %G 它似乎卡在一个文件上(它打印 [FY1.txt] 并且没有继续前进)。另外,我应该在脚本中放入什么以便它知道输入来自命令提示符?
  • @Snaaa:for 语句将为每个文件启动一次 Python 脚本,假设 Python 脚本以某个点结束。我不太清楚你的脚本在做什么,所以很难说得太具体,但请参阅我上面所做的编辑。
  • @Snaaa:特别是,您的脚本是否需要知道它正在处理的文件的名称?它是否需要知道文件上下文的变化?您只是处理文件中的行还是使用不同的逻辑运行?
  • 它只是从每个文件中提取一些数据,摆弄它,然后将其写入一个文件,这样所有文件中的数据都会放在一个文件中。出于所有意图和目的,这些文件是相同的,它们只是时间和日期列表
  • @Snaaa:您的代码是否已安排好,因此您有某种可以使用行或打开文件句柄作为参数调用的主函数(我在上面的示例中称为do_something_to() )?
猜你喜欢
  • 2018-12-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-20
相关资源
最近更新 更多