小编Mar*_*ger的帖子

如何从 Python3 中的文本文件获取和创建自定义变量?

所以,我正在制作一个程序(希望如此),它是一个“改进的”命令提示符。
在我的程序中,我希望它从文本文件中获取所有行。
文本文件将包含如下所示的行:

desktop=C:\Users\%username%\Desktop
scripts=D:\Scripts
Run Code Online (Sandbox Code Playgroud)

我希望我的程序做的是通读它,并创建新的变量,例如:

desktop = "C:\Users\%username%\Desktop"
scripts = "D:\Scripts"
Run Code Online (Sandbox Code Playgroud)

我知道可能有更好、更安全的方法来做到这一点,但现在,我想这样做。到目前为止,这是我的代码(它不起作用):

with open("custom_shortcuts.txt","r") as f:
    customShortcuts = [x.strip('\n') for x in f.readlines()]
for i in customShortcuts:
    parts = i.split("=")
    varName = str(parts[0])
    varValue = str(parts[1])
    eval("varName = varValue")
Run Code Online (Sandbox Code Playgroud)

如您所见,我尝试使用 eval(),但失败了。

python eval python-3.x

1
推荐指数
1
解决办法
38
查看次数

可以与内联语句一起使用吗?

例如,以下代码不是内联的:

with x:
    do(stuff)
Run Code Online (Sandbox Code Playgroud)

我可以像这样单行:

with x: do(stuff)
Run Code Online (Sandbox Code Playgroud)

但是我想知道是否有一种方法可以做这样的事情(内联):

a = [(lambda x: with x: do(stuff))(x) for x in someList]
Run Code Online (Sandbox Code Playgroud)

编辑:

详细说,我有一个对象列表,每个对象都有自己的上下文。这意味着do(stuff)使用时的行为会有所不同,with x并且上面的语句将遍历该列表中的每个对象,输入它们的上下文,运行do(stuff),然后继续下一个。

由于按照我的尝试进行此操作无效,因此我想知道是否有任何方法以及如何执行此操作。

上面代码的扩展版看起来像这样(并且可以正常工作):

a = []
for x in someList:
    with x: a.append( do(stuff) )
Run Code Online (Sandbox Code Playgroud)

python inline python-3.x

1
推荐指数
1
解决办法
57
查看次数

标签 统计

python ×2

python-3.x ×2

eval ×1

inline ×1