Sna*_*aaa 3 python windows directory command-prompt
这是一个愚蠢的问题,我知道它是,但由于某种原因,我找不到任何有用的教程来从 Windows 命令提示符运行 python,所以我不得不问你们。我有一个脚本,我需要在一个目录中以 FY*.txt 或 WS*.txt 开头的所有文件上运行。我试过通过命令提示符进入目录并做
for file in FY*.txt; do python my_script.py
Run Code Online (Sandbox Code Playgroud)
这只是告诉我此时“文件”是意外的。我也试过
python my_script.py FY1.txt FY2.txt FY3.txt
Run Code Online (Sandbox Code Playgroud)
和
import sys
inputfilenames=sys.argv[1:27]
for name in inputfilenames:
datafile=open(name,'r')
Run Code Online (Sandbox Code Playgroud)
就像我在 python 脚本本身中打开文件的方式一样。这似乎只在一个文件上运行脚本,而不是所有文件。
我为我的无知道歉,我真的不知道如何使用命令提示符来运行 python 的东西。除了答案,如果有人有任何教程建议,我将非常非常感激。
我不太确定最初的示例应该是什么,但是要从标准的 Windows 命令提示符执行此操作,您可以使用以下内容:
for %G in (FY*.txt); do python my_script.py %G
Run Code Online (Sandbox Code Playgroud)
如果你做这样的事情,你需要在你的代码中包含以下内容:
with open(sys.argv[1], 'r') as f:
do_something_with(f)
Run Code Online (Sandbox Code Playgroud)
或者,您可以考虑使用 fileinput模块获取第二个示例中的文件列表并处理它们。也就是说,在你的脚本中,你会有类似的东西:
for line in fileinput.input():
do_something_with(line)
Run Code Online (Sandbox Code Playgroud)
或者您可以使通配符表达式成为参数并使用 glob模块,因此您可以运行:
python my_script.py FY*.txt
Run Code Online (Sandbox Code Playgroud)
然后在您的脚本中执行以下操作:
for file in glob.glob(sys.argv[1]):
with open(file, 'r') as f:
do_something_to(f)
Run Code Online (Sandbox Code Playgroud)
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)
Run Code Online (Sandbox Code Playgroud)
这将允许您执行:
python my_script FY*.txt WS*.txt
Run Code Online (Sandbox Code Playgroud)