【问题标题】:Python local folder path for each platform每个平台的 Python 本地文件夹路径
【发布时间】:2016-05-18 05:27:52
【问题描述】:

我的脚本在名为“Fold”的特殊文件夹中工作。 在不同的计算机和操作系统上,此文件夹的路径是不同的。 例如,在 Mac 上它将:“/Users/user/Fold”。在 Windows 上 - "C:\Users\user\Desktop\Fold" 。 如何在我的 Python 脚本中输入此文件夹的路径以在每个平台上工作?如果脚本仅在“Fold”文件夹中有效,我应该在脚本中键入什么内容?

【问题讨论】:

  • Desktop 不符合主题。如果您坚持,您将不得不对其进行特殊处理。但是,c:\Users\user\Foldc:\Users\user\AppData\Foldc:\Users\user\Documents\Fold 会更有意义。

标签: python directory


【解决方案1】:

os 模块具有识别各种操作系统的功能

在您的代码中,您可以这样做

import os

if os.name == 'nt'
    # do something nt stands for windows
    path = 'C:\Users\user\Desktop\Fold'
elif os.name == 'posix'
    # linux or mac
    path = '/home/user/Desktop/Fold'

平台模块提供了比 os 模块更多的细节,os 可能会在我的 linux 机器平台上为 linux 和 mac 返回 posix 输出此

import platform

>>> print(platform.system())
Linux
>>> print(platform.release())
3.13.0-76-generic

platform.system() 应该为 mac 返回 'Darwin'

【讨论】:

    【解决方案2】:

    你可以使用

    import sys
    import os
    sys.platform == "win32":
        fold = os.path.join("C:", "Users", "user", "Desktop", "Fold")
    elif sys.platform == "Darwin":
        fold = os.path.join("/Users", "user", "Fold")
    else:
        ...
    

    或者您可以在每台计算机上设置一个环境变量,如果它在同一个操作系统中发生变化。

    【讨论】:

      【解决方案3】:

      您可以通过os.path.expanduser("~") 获取用户文件夹的路径(Mac:/Users/user,Win:C:\Users\user\)。从那里开始,您的实现似乎特定于操作系统 - 可能只有 Windows 实现将其数据放在桌面上。由于您可以通过sys.platform 获取平台标识符,因此您可以执行以下操作:

      import sys, os
      folderPath = os.path.join("Desktop", "Fold") if sys.platform == "win32" else "Fold"
      fullPath = os.path.join(os.path.expanduser("~"), folderPath)
      

      如果你想在其他系统上使用桌面文件夹的路径,请参考Cross-platform Desktop directory path?

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-09-12
        相关资源
        最近更新 更多