【问题标题】:How to account for changes in name of user如何解释用户名的变化
【发布时间】:2019-02-24 16:43:10
【问题描述】:

我正在用 python 编写一个简短的代码来自动化同事的流程。该程序相当简单,它从包含许多其他垃圾的文本文件中查找并提取名称列表。然后可以轻松地将列表与其他列表进行比较或放入 excel 文件等。

我的想法是,他们最容易从源中获取文件并将其粘贴到他们桌面上的文本文件中,我的程序将自动定位、读取并最终从中生成一个新的干净文件。我已经能够使用自己的计算机自行管理所有这些。

当我想访问计算机上的原始垃圾填充文本文件时,我只需编写:

f = open("/Users/Jon/Desktop/namelisttext.txt", "r+")

但是当我将此程序导出为 .exe 并将其发送给同事时,这当然行不通,因为使用它的人可能没有用户名“Jon”。这似乎是一个常见问题,所以我假设有一些我无法找到的简单解决方案。有没有办法访问“当前用户”的桌面或查找具有特定名称的文件而不给出它所在位置的完整路径?

经过一些研究,Environ 似乎是一个很好的解决方案,它是为 PC 设计的。工作计算机是 PC,但我在 Mac 上编码,所以我猜这意味着我无法在我的系统上测试它。

感谢您提供任何帮助或解决问题的替代方法!

【问题讨论】:

  • 你的同事可以把txt文件放到python脚本所在的文件夹吗?
  • 查看这个答案。 stackoverflow.com/a/2668952/494134
  • 使用import osos.environ['USERNAME']

标签: python path directory


【解决方案1】:

使用~代表用户的家目录,然后你可以使用os.path.expanduser将其展开为当前用户的完整路径。

如果您以Jon 登录并且您的主目录是/Users/Jon,那么

import os

print(os.path.expanduser("~/Desktop/namelisttext.txt"))

将打印:

/Users/Jon/Desktop/namelisttext.txt

os.path.expanduser 的优点在于它并不特定于某个操作系统。它会在 Python 支持的任何操作系统上执行正确的操作,包括 Windows,在这些操作系统中,~ 通常不会在其他情况下使用。

【讨论】:

    猜你喜欢
    • 2013-08-02
    • 2018-03-09
    • 1970-01-01
    • 2015-12-22
    • 1970-01-01
    • 2021-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多