在许多文件上从Windows命令提示符运行python

时间:2012-08-09 16:07:30

标签: python windows directory command-prompt

这是一个愚蠢的问题,我知道它是,但由于某种原因,我找不到任何有用的教程从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的东西。除了答案,如果有人有任何教程建议,我将非常,非常感激。

1 个答案:

答案 0 :(得分:4)

我不太确定该初始示例应该是什么,但是从标准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