开发者社区> 问答> 正文

如何查找系统上的目录,无论它在python中的什么位置?

我为一个自动化项目运行了一系列脚本。其中一个脚本创建了一个名为“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’在每台机器上是不同的。谢谢! 问题来源StackOverflow 地址:/questions/59382744/how-do-i-find-a-directory-on-a-system-no-matter-where-it-is-in-python

展开
收起
kun坤 2019-12-27 16:59:51 484 0
1 条回答
写回答
取消 提交回答
  • 您要做的是访问一个环境变量,例如$HOME,然后您的脚本将接管它。这比Python稍微高一点(任何脚本都可以这样做)。 在Python中,您可以使用:

    import os
    
    
    HOME = os.getenv('HOME')
    

    去得到它。 一种更简洁(且跨平台)的方法是使用os.path.expanduser(),例如:

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

    在这两种情况下,您都应该在HOME中获取路径的/Users/user.name部分,您可以从那里获取它。 例如:

    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,它提供了跨平台的方法来访问各种标准路径。

    2019-12-27 16:59:59
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
From Python Scikit-Learn to Sc 立即下载
Data Pre-Processing in Python: 立即下载
双剑合璧-Python和大数据计算平台的结合 立即下载