【问题标题】:How to load dependencies and subfolders in Pycharm?如何在 Pycharm 中加载依赖项和子文件夹?
【发布时间】:2018-08-22 13:28:24
【问题描述】:

我对 python 和 pycharm 很陌生,我很困惑! 当我在 pycharm 中运行我的项目时,它给了我一个关于找不到文件路径的错误。物理文件路径为:

'../Project/BC/RequiredFiles/resources/a_reqs.csv'

我的项目工作目录是“Project/BC”,项目运行文件(startApp.sh)也在那里。但是想要使用 a_req.csv 的 .py 文件位于“RequiredFiles”文件夹中。 .py文件中有如下代码:

reqsfile = os.getcwd() + "/resources/a_reqs.csv"

它返回:'../Project/BC/resources/a_reqs.csv'

而不是:'../Project/BC/resources/RequiredFiles/a_reqs.csv'

当 .py 文件在 "RequiredFiles" 中时,os.getcwd() 也必须包含它。但事实并非如此。

问题是我无法更改寻址代码。因为此代码在另一个 IDE 中工作,而在其他平台或操作系统中使用该代码的其他人没有任何问题。我在 mac OS 中工作,如果我没记错的话,代码适用于 windows!

那么,我如何告诉 Pycharm(在 mac 中)查看并加载“RequiredFiles”文件夹作为我工作目录的子文件夹!!!

【问题讨论】:

    标签: python macos pycharm relative-path


    【解决方案1】:

    os.getcwd 返回进程的当前工作目录(可能是startApp.sh 所在的目录,也可能是另一个目录,这取决于 PyCharm 的运行配置设置,或者,如果您从命令行启动程序,执行命令的目录)。

    要使路径独立于当前工作目录,您可以获取 Python 文件所在的目录并从中构建路径:

    os.path.dirname(__file__) + "/resources/a_reqs.csv"
    

    【讨论】:

      【解决方案2】:

      从你的问题我看到的是:

      reqsfile = os.getcwd() + "/resources/a_reqs.csv"
      

      产生:“../Project/BC/resources/a_reqs.csv”,而您想要的输出是 “../Project/BC/resources/RequiredFiles/a_reqs.csv”。既然我们知道 os.getcwd 正在返回“/Project/BC/”,那么为了获得您想要的结果,您应该这样做:

      reqsfile = os.getcwd() + "/resources/RequiredFiles/a_reqs.csv"
      

      但由于您希望解决方案可以使用或不使用 RequiredFiles 子目录,您可以应用条件解决方案,例如:

      import os.path
      if os.path.exists(os.getcwd() + "/resources/RequiredFiles/a_reqs.csv"):
          reqsfile = os.getcwd() + "/resources/RequiredFiles/a_reqs.csv"
      else:
          reqsfile = os.getcwd() + "/resources/a_reqs.csv"
      

      如果该目录存在,此解决方案会将 reqsfile 设置为RequiredFiles 目录中的csv,因此将为您工作。另一方面,如果RequiredFiles 目录不存在,它将默认为/resources/ 中的csv。 通常,当小组在项目上进行协作时,会维护相同的文件层次结构以避免这些类型的问题,因此您可能需要考虑将 csv 从 /RequiredFiles/ 移动到 /resources/。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-06-09
        • 2014-11-12
        • 2016-04-05
        • 2020-01-03
        • 1970-01-01
        • 1970-01-01
        • 2012-02-12
        • 1970-01-01
        相关资源
        最近更新 更多