如何使任何用户的路径目录通用和动态?

How to make path directory generic and dynamic for any user?

我在 C 盘安装了 trace32,并且在我的代码中提到了那个目录。假设如果其他用户 运行 此代码在他们的系统中,则该代码不起作用,因为用户已将应用程序安装在不同的位置。我怎样才能使这个目录通用和动态并使其适用于所有用户?

你有多种可能性。请向他们解释一些通用技巧:

  • 使 TRACE32 系统路径可配置,而不是安装内的路径。在您的情况下,这将是 r"C:\T32"。此路径称为 t32sysT32SYS.

  • 确保使用 os.path.join 连接字符串,以便它在用户操作系统上工作:os.path.join(r"C:\T32", "bin/windows64")

  1. 使用 argparse 的命令行参数。这是最简单的解决方案,需要用户像这样启动 Python 脚本:python script.py --t32sys="C:\t32".
import argparse

parser = argparse.ArgumentParser()
parser.add_argument("--t32sys", help="TRACE32 system directory.")
args = parser.parse_args()
t32sys = args["t32sys"]
  1. 除了命令行参数,您还可以使用配置文件。为此,您可以使用内置的 configparser 模块。这样做的好处是用户不需要将目录指定为命令行参数,但缺点是用户需要知道配置文件。

配置文件(example.ini):

[DEFAULT]
t32sys = C:\T32
import configparser

parser = configparser.ConfigParser()
parser.read("example.ini")
args = parser["DEFAULT"]
t32sys = args["t32sys"]
  1. 环境变量使用os.environ。 T32SYS 是经常用于此的环境变量,但不能确保设置它。所以你必须告诉用户他们必须在使用你的工具之前设置变量。这种方法的优点是可以在后台工作,但在我看来也有点令人费解。我只会将它与 argparse 或 configparse 结合使用来覆盖。
import os

t32sys = os.environ.get('T32SYS')
  1. 您当然可以将多种方式与回退/覆盖相结合。