如何从txt文件中导入行并使其成为一个变量值python?

2024-09-29 21:32:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个测试.txt现在有两行的文件

not False == True
not True == True

我正在尝试将它导入到我的函数中,这样它就可以显示带有输入的文本,然后实际执行布尔运算 然后每行重复一次。第6行的输入是有效的,但第7行不行,我知道为什么,我只是不知道怎么做我想做的。。。你知道吗

def calc (read):
    line = read.readline()

    if line:
        lines = line.strip()
        input(f"Does {lines}?>")
        print(f"{lines}")
        return calc(boolfile)

boolfile = open("test.txt")
calc(boolfile)

Tags: 文件函数文本txtfalsetruereadreadline
2条回答

f-string只能计算源代码中f-string内部的表达式。你知道吗

如果要像计算源代码一样计算包含表达式表示形式的字符串,则需要使用^{}。你知道吗

<^ >太长了,读不下去了,{{CD1>}几乎总是一个坏主意(TL;DR:任何人都可以改变你输入到{{CD1>}的输入,可以让你运行他们想要的任何代码)。但如果你真的想这么做,那就是方法:

if line:
    lines = line.strip()
    input(f"Does {lines}?>")
    print(eval(lines))

如果您想做一些更安全的事情,您唯一能做的就是将代码解析为比“任何Python表达式”更安全的东西。这并不像听起来那么难(特别是因为,如果您的语言是Python的一个精确子集,那么您可以使用^{}模块来进行解析,并且您只需要编写解释器部分),但它并不完全是一个一行程序。你知道吗

好像你在找eval。 试试这个:

def calc (read):
    line = read.readline()

    if line:
        lines = line.strip()
        input(f"Does {lines}?>")
        print(eval(lines))
        return calc(boolfile)

boolfile = open("test.txt")

calc(boolfile)

输出:

Does not False == True?>
True
Does not True == True?>
False

相关问题 更多 >

    热门问题