python:从文件输入python数据的简单方法

原文 标签 python import persistence

在 shell 脚本中,可能会执行以下操作:

myvar='default_value'
source myfile.sh
echo $myvar

其中 myfile.sh 类似于:
echo "myvar='special_value'" > myfile.sh

我知道在 python 中执行此操作的几种“安全”方法,但我能想到在 Python 中获得类似行为的唯一方法(尽管丑陋且不安全)如下:
myvar = 'default_value'
myimport = 'from %s import *' % 'myfile'
exec(myimport)
print(myvar)

myfile.py 在哪里 ./看起来像:
myvar = 'special_value'

我想我会最高兴做这样的事情:
m.myvar = 'default_value'
m.update(__import__(myimport))

并更新 m 中的对象。如果不写一些东西来循环对象,我想不出一种简单的方法。

最佳答案

有两种方法来看待这个问题。

How can I read key-value pairs in python? Is there a standard way to do this?





How can I give full expressive power to a configuration script?



如果您的问题是第一个问题;那么最明显的答案是使用 ConfigParser模块:
from ConfigParser import RawConfigParser
parser = RawConfigParser({"myvar": "default_value"}) # Never use ConfigParser.ConfigParser!
parser.read("my_config")
myvar = parser.get("mysection", "myvar")

这将从看起来像普通 INI 样式配置的文件中读取值:
# You can use comments
[mysection]
myvar = special_value

对于第二个选项,当您真的想将 python 的全部功能赋予配置时(这很少见,但有时是必要的),您可能不想使用 import , 而你应该使用 execfile :
config = {}
execfile("my_config", config)
myvar = config.get("myvar", "default_value")

依次从 python 脚本中读取;它将读取全局变量 myvar无论脚本如何派生它:
import random
myvar = random.choice("special_value", "another_value")

关于python:从文件输入python数据的简单方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7557607/

相关文章:

python - 在 Python 中使用 # 作为注释的起源?

java - 在Android Studio中的Android项目中添加jar文件时出现问题

python - 是否可以从代码进入 ipython?

python - 逐行解析数据

dart - 在 main 中导入 mydart.dart 文件的正确方法

python - 导入模块错误Python

ruby-on-rails - 使用正常的持久性方法通过 mongoid 更新 Rails 模型的属性

ios - 通过Testflight安装新版本时,NSUserDefaults是否持久?

python - Celery 将命令行参数传输到 Task

python - 如何在 RNN 中嵌入句子序列?