【问题标题】:How to find path to current .py file in Spyder (Anaconda)?如何在 Spyder (Anaconda) 中找到当前 .py 文件的路径?
【发布时间】:2018-05-07 14:22:40
【问题描述】:

设置

我在我的计算机上运行一个脚本,该脚本位于Users/path/to/my/script.py 目录中。

在脚本中,我使用脚本的路径,例如,

sub_path = 'Users/path/to/my/'
os.chdir(sub_path + 'other_script/') 

如您所见,我在代码中“手动”定义了sub_path


问题

我不想手动定义sub_path,我宁愿让 Python 为我做这件事。

我正在寻找类似于我用来获取当前工作目录的代码:os.getcwd(),然后是获取当前文件目录的代码。

我主要找到类似于this one的答案,上面写着,

os.path.abspath(os.path.dirname(__file__))

但在 Spyder 和 Anaconda 设置中,这会生成一个 NameError: name '__file__' is not defined

我能做什么?

【问题讨论】:

  • 这可能是因为您在 ipython 命令行中运行部分代码。所以命令行没有__file__ 属性。使用播放按钮运行整个脚本,应该没问题。

标签: python anaconda spyder


【解决方案1】:

如果您想移回一个文件夹/目录,您可以在文件路径中使用..

os.chdir('../other_scripts/')

会起作用。查看thisthe wiki 可能会有所帮助。 如果您想从当前位置移动,可以使用'./new_dir/'。如果您想自动查找其他文件,您可能需要阅读here,它说使用os.walkThis 可能是同一个问题。

【讨论】:

    【解决方案2】:

    Mark8888 pointed out 运行整个脚本(运行文件 (F5))而不是只运行部分脚本

    这种方式应该可以使用多种方法来获取脚本文件位置并更改当前工作目录

    import os
    # directory of script file
    print(os.path.abspath(os.path.dirname(__file__)))
    # change current working directory
    os.chdir(os.path.abspath(os.path.dirname(__file__)))
    # current working directory
    print(os.getcwd())
    

    还有

    import os
    import sys
    # directory of script file
    print(os.path.abspath(os.path.dirname(sys.argv[0])))
    # change current working directory
    os.chdir(os.path.abspath(os.path.dirname(sys.argv[0])))
    # current working directory
    print(os.getcwd())
    

    【讨论】:

      【解决方案3】:

      我将以下行添加到我运行的任何脚本中,以防我需要访问与脚本位置相关的数据

      import sys
      script = sys.argv[0]
      print(script)
      'C:/SomeFolder/A_Subfolder/CurrentlyRunningScript.py'  # changed obviously
      

      【讨论】:

      • 感谢您与我一起思考。你的解决方案对我不起作用,它给了我一个script = ''
      • 它仅在您从 python IDE 中运行脚本时才有效,我怀疑您正在启动 python.exe 'c:/somescript.py'
      【解决方案4】:

      首先,保存您的 Jupyter Notebook。其次,找到你的 Jupyter Notebook 所在的目录。第三,确保你的 Jupyter Notebook 和 CSV 文件在同一个地方。

      【讨论】:

      • OP 询问如何在 Spyder 中而不是在笔记本中获取当前文件路径。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-09
      • 2013-06-15
      • 2010-11-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多