无论在python中的哪个位置,如何查找系统上的目录?

时间:2019-12-17 22:02:28

标签: python glob

我为自动化项目运行了一系列脚本。其中一个脚本创建了一个名为“ cloned_git_repo”的文件夹。下一个脚本需要在该文件夹中查找文件以进行转换。如何获得Python脚本以自动进入该文件夹以进行工作? 这是代码:

result = [y for x in os.walk('/Users/user.name/Desktop/automation_project/cloned_git_repo') for y in glob(os.path.join(x[0], '*.csv'))]

代替对目录路径进行硬编码,我如何使其自动进入“ cloned_git_repo”并继续执行程序的其余部分。不能对其进行硬编码,因为不同计算机上的不同人员将运行脚本,因此“ /Users/user.name/Desktop/automation_project/cloned_git_repo”对于每台计算机都是不同的。谢谢!

1 个答案:

答案 0 :(得分:1)

您要做的是访问环境变量,例如$HOME,您的脚本将从那里接管。这会在Python的之上(任何脚本都可以做到)。

在Python中,您可以使用:

import os


HOME = os.getenv('HOME')

得到它。

一种更清洁(跨平台)的方法是使用os.path.expanduser(),例如:

import os


HOME = os.path.expanduser('~')

在两种情况下,都应在/Users/user.name中获得路径的HOME部分,然后可以从那里获取。

例如:

result = [
    y
    for x in os.walk('/Users/user.name/Desktop/automation_project/cloned_git_repo')
    for y in glob(os.path.join(x[0], '*.csv'))]

可能会变成:

import os


HOME = os.path.expanduser('~')
result = [
    y
    for x in os.walk(os.path.join(HOME, 'Desktop/automation_project/cloned_git_repo'))
    for y in glob(os.path.join(x[0], '*.csv'))]

一种更灵活的方法是使用更高级别的程序包,例如appdir,它提供了用于访问各种标准路径的跨平台方法。