python - 在windows路径中查找文件
问题描述
我正在尝试让其他人的 Python 脚本在我的计算机上运行,并且部分脚本在 USERPROFILE 中找到了一个文件。这是该代码:
for w in os.walk(os.getenv('USERPROFILE')):
if 'FilenName' in w[1]:
path = str(w[0]) + r'\FilenName\UsrData\Directory\Data'
但是,在上面的代码中,程序尝试在以下目录中进行搜索:
C:\Users\User\AppData\Roaming\
实际上,程序应该在什么时候查看
C:\Users\User\AppData\Local\
如果我用以下代码替换问题代码,它可以工作,但我需要它为所有 USERPROFILE 运行,而不仅仅是我的:
path = r'C:\Users\Bill\AppData\Local\FilenName\UsrData\Directory\Data'
解决方案是什么?
谢谢。
解决方案
我不在 Windows 机器上,所以这有点棘手,但你能找到所有使用 env var ALLUSERSPROFILE 的用户配置文件吗?
另一种选择可能是将字符串中的“Roaming”替换为“Local”。这有点hacky,但可以做到:
for w in os.walk(os.getenv('USERPROFILE')):
if 'FilenName' in w[1]:
path = (str(w[0]) + r'\FilenName\UsrData\Directory\Data').replace('Roaming', 'Local')
推荐阅读
- wordpress - Woocommerce 中的 Polylang 和批量产品翻译
- java - 在 Spring Boot 2.0 / Hibernate 5 中获取 SessionFactory
- android - osmdroid 标记信息窗口在聚类标记后不显示
- php - 路由在调用控制器方法之前重定向
- android - 在领域数据库中保存数据时出错
- regex - 正则表达式的否定
- c - 消费者-生产者 - MPI
- dart - 当应用程序加载时,默认路由('/')是否会添加到导航器堆栈中
- linux - 使用 sed 或 awk 提取两个单词之间的数据
- dart - 如何删除 RadioListTile 上的内部填充,以便可以连续使用 3 个 RadioListTiles?