【问题标题】:How to read set environment variable in python [duplicate]如何在python中读取设置的环境变量[重复]
【发布时间】:2015-09-21 13:08:05
【问题描述】:

在 UNIX 的命令行中,我会这样做

setenv HOME <path to home>

我将它作为参数传递给我的 python 脚本

 python hello.py HOME

然后做

sys.argv[1] = os.environ["HOME"] 

它仍然没有读取路径。

我是 python 新手,os.environ 是否适合这种情况?

【问题讨论】:

  • 为什么将 sys.argv[1] 设置为 home 环境变量?您的完整要求是什么?
  • 我的脚本需要目录路径作为参数。每个用户的目录路径都不同(取决于不同的 PC)。每个用户都将环境变量 HOME 设置为路径。它就像所有用户的通用环境变量。
  • 我是 python 新手,还在学习它。我正在使用 python 的 argparse 模块将参数与脚本一起传递。我需要的单个参数是目录的路径,对于每个用户,例如 user1: /home/user0123/folder , user2: /home/user8976/folder2/folder 都是不同的。想法是每个用户都将路径设置为变量 HOME 并且脚本将使用它。所以我通过的第一个参数是 HOME。因此做 sys.argv[1] = os.environ["HOME"]。基本上 sys.argv[1] 应该是单个用户的路径。

标签: python environment-variables command-line-arguments


【解决方案1】:

如果您的目标是获取主目录的路径作为参数,您可以通过让 shell 在调用脚本之前评估参数来让您的用户发送它。

我有一个简单的脚本,比如 -

import sys
print(sys.argv[1])

在 Windows 中我称之为 -

set HOME=D:\
python script.py %HOME%

我得到的输出是 -

D:\

在 Linux 中 -

$ python hello.py $HOME

输出 -

/home/random/

如果你想从环境变量中获取它,并且你想将环境变量作为第一个参数传递给脚本,那么你应该改变你的脚本 -

sys.argv[1] = os.environ.get(sys.argv[1],sys.argv[1])

这会

【讨论】:

  • 非常感谢!它奏效了。
  • 请记住接受您问题的答案(全部),点击答案左侧的勾号使其变为绿色,这将对社区有所帮助。
  • 谢谢。我是 stackoverflow 的新手,不知道这一点。
【解决方案2】:

这似乎有点取决于你的外壳。例如,在 Linux 中使用 bash 4.3-7ubuntu1.5:

$ export XXX="abc"
$ python
>>> import os
>>> os.environ["XXX"]
'abc'
>>> os.environ["HOME"]
'/home/alan'

【讨论】:

    猜你喜欢
    • 2014-04-20
    • 2015-02-23
    • 2013-03-25
    • 1970-01-01
    • 2011-08-23
    • 2021-09-16
    • 2015-06-15
    相关资源
    最近更新 更多