在Python中使用带文件的开关

问题描述 投票:0回答:1

我用C语言写了这段代码,它选择了一个文件来读取数据,然后用选择的数据运行程序。我想用Python写这个,我找到了一些教程,但所有的教程都提到用开关打印消息。你能帮我解决这个问题吗?

switch (alegere)
    {
    case 'a':
        F=fopen("date1.txt", "r");//deschidere fisier pentru citire
        break;
    case 'b':
        F=fopen("date2.txt", "r");
        break;
    case 'c':
        F=fopen("date3.txt", "r");
        break;
    case 'd':
        F=fopen("date4.txt", "r");
        break;
    case 'e':
        F=fopen("date5.txt", "r");
        break;
    case 'f':
        F=fopen("date6.txt", "r");
        break;
    case 'g':
        F=fopen("date7.txt", "r");
        break;
    case 'h':
        F=fopen("date8.txt", "r");
        break;
    case 'i':
        F=fopen("date9.txt", "r");
        break;
    case 'j':
        F=fopen("date10.txt", "r");
        break;
    default:
        printf("Input invalid");
        exit(1);
        break;
    }
python file switch-statement pyth
1个回答
1
投票

你可以使用dict来做选择

file_paths = {
    'a': 'date1.txt',
    'b': 'date2.txt',
}
file_path = file_paths.get(alegere)
if not file_path:
    printf("Input invalid");
    exit(1)

with open(file_path, 'r') as fin:
    # do sth

1
投票

你可以用一个简单的字典

adict = {a:fonctionA, b:fonctionB, ...}

aDict['d'] = fonctionD

字典可以采取像fonctions这样的对象... ...


0
投票

对于你的具体例子,你可以用这个。

OFFSET = 96
file_no = ord(alegere) - OFFSET
file_name = f"date{file_no}.txt"

if file_no in range(1, 11):
    fh = open(file_name)
else:
    print("Input invalid")

这个... OFFSET 帮助将字母映射到数字,即。a => 1, b => 2,... 由于 "a "在ASCII表中对应97,我们减去96。

© www.soinside.com 2019 - 2024. All rights reserved.