使用“python scriptname.py filename”在Python中打开文件

时间:2013-01-15 14:48:54

标签: python file-io

我是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中所做的迭代?谢谢!

2 个答案:

答案 0 :(得分:1)

您正在寻找:

import sys
InFileName = sys.argv[1]

请参阅documentation

对于更复杂的内容,请查看optparseargparse模块(后者更可取,但仅适用于较新版本的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)