0

我是 python 脚本的新手。我有一个脚本,希望在目录中的所有文件上运行。我在这个线程中找到了非常有用的建议。但是,我很难确定如何格式化实际脚本,以便它检索我想在命令提示符下运行脚本的文件的文件名,即“python script.py 文件名。*”我试过我最擅长浏览该站点中的 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')

我可以对代码做些什么来让自己在目录中使用类似于在这种情况下所做的迭代?谢谢!

4

2 回答 2

1

您正在寻找:

import sys
InFileName = sys.argv[1]

请参阅文档

对于更复杂的东西,请查看optparseandargparse模块(后者更可取,但仅在较新版本的 Python 中可用)。

于 2013-01-15T14:50:37.863 回答
0

您有很多选项可以使用 Python 处理文件列表:


您可以使用命令行的 shell 扩展工具将更多文件名传递给脚本,然后迭代命令行参数

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 模块进行此扩展:

import glob

for fname in glob.glob('*'):
    process_file(fname)
于 2013-01-15T14:56:28.180 回答