我正在尝试创建一个python脚本,它可以通过命令行接收多个文件作为输入。
现在我正在使用一个使用一个文件作为输入的方法:
我现在使用:python function_name.py input_file.txt
使用如下代码:
import sys
def function_name():
input = sys.argv[1]
with open(input,'r') as afile:
read_data = afile.read()
if __name__ == '__main__':
function_name()
但是如何将当前目录中的所有.txt文件用作输入?
即:python function_name.py *.txt
或者:python function_name.py ./*/*.txt
我想对每个输入文件执行相同的操作。
答案 0 :(得分:3)
sys.argv是传递给脚本的参数列表。第一个是脚本的名称(scriptname.py),其余的将是你输入的任何内容。
如果您运行python function_name.py *.txt
,这将由shell扩展为python function_name.py 1.txt 2.txt blah.txt wibble.com.exe.extension.txt
(或此目录中的任何文件名。
所以,我会做这样的事情:
def function_name():
for filename in sys.argv[1:]:
print "You specified %s on the commandline - do something with it here!" % filename
[1:]
部分表示忽略索引1之前的任何参数(即从第二个开始),或者您将处理您的python脚本!
根据经验,我可能会将此作为参数传递给函数,所以:
import sys
def function_name(filestoprocess):
for input in filestoprocess:
print "Processing %s" % input
with open(input,'r') as afile:
read_data = afile.read()
if __name__ == '__main__':
function_name(sys.argv[1:])
答案 1 :(得分:1)
您可能想查看glob模块。您可以将命令行输入glob.glob
,它会为您提供与您发送的通配符匹配的文件列表。然后您可以根据需要处理它们