我是python脚本的新手。我有一个脚本,我希望在目录中的所有文件上运行。我在this thread找到了非常有用的建议。但是,我很难确定如何格式化实际脚本,以便它在命令提示符中检索我想要运行脚本的文件的文件名,即“python script.py filename。*”我试过了我最擅长浏览本网站的Python文档和论坛,并且空洞了(我可能只是不知道应该搜索哪些关键字)。
我目前能够一次在一个文件上运行我的脚本,并使用以下代码以新的文件扩展名输出它,但这样我一次只能执行一个文件。我希望能够使用'GENE。*'迭代整个目录:
InFileName = 'GENE.303'
InFile = open(InFileName, 'r') #opens a pipeline to the file to be read line by line
OutFileName = InFile + '.phy'
OutFile = open(OutFileName, 'w')
我可以对代码做些什么来允许自己在目录中使用类似于this case中所做的迭代?谢谢!
答案 0 :(得分:1)
您正在寻找:
import sys
InFileName = sys.argv[1]
请参阅documentation。
对于更复杂的内容,请查看optparse
和argparse
模块(后者更可取,但仅适用于较新版本的Python)。
答案 1 :(得分:0)
使用Python处理文件列表有很多选择:
您可以使用命令行的shell扩展工具将更多文件名传递给脚本,然后迭代command line arguments:
import sys
def process_file(fname):
with open(fname) as f:
for line in f:
# TODO: implement
print line
for fname in sys.argv[1:]:
process_file(fname)
并称之为:
python my_script.py * # expands to all files in the directory
您还可以使用glob module进行此扩展:
import glob
for fname in glob.glob('*'):
process_file(fname)