python 如何打开在命令行参数中传递的文件

wz3gfoph  于 2023-01-16  发布在  Python
关注(0)|答案(1)|浏览(132)

我有我的配置编码在这里:

@staticmethod
def getConfig(env):
    pwd=os.getcwd()
    if "win" in (platform.system().lower()):
        f = open(pwd+"\config_"+env.lower()+"_data2.json")
    else:
        f = open(pwd+"/config_"+env.lower()+"_data2.json")
    config = json.load(f)
    f.close()
    return config

@staticmethod
def isWin():
    if "win" in (platform.system().lower()):
        return True
    else:
        return False

我有2个JSON文件,我想我的脚本读取,但它的方式写上面只读取其中之一。我想知道如何改变它像:

f = open(pwd+"\config_"+env.lower()+"_data_f'{}'.json")

因此它可以读取dataset1.config或dataset2.config。我不确定这是否可行,但我希望这样做,以便可以在命令行中指定要运行的文件:python datascript.py -f dataset1.configpython datascript.py -f dataset2.config。是否将整个open()调用赋给一个变量?

jxct1oxe

jxct1oxe1#

您需要做的就是解析sys.argv以获取-f标志的参数,然后连接字符串并将结果传递给open()

import sys

### ... more code ...

    @staticmethod
    def getConfig(env):
        pwd = os.getcwd()
        file = None
        try:
            file = sys.argv[sys.argv.index('-f')+1]
        except ValueError:
            file = "data2.json"

        if "win" in (platform.system().lower()):
            f = open(pwd+"\config_"+env.lower()+"_" + file)
        else:
            f = open(pwd+"/config_"+env.lower()+"_" + file)
        config = json.load(f)
        f.close()
        return config

sys.argv.index('-f')在命令行参数中给出-f的索引,因此参数必须是filename。如果没有给出-f参数,try-except语句将提供默认值。

相关问题