【问题标题】:File Management in PythonPython中的文件管理
【发布时间】:2013-07-18 15:54:34
【问题描述】:

我对 Python 有点陌生,做过几个脚本,但没有太多严肃的程序。我试图了解将我编写的函数/脚本(以及我将来创建的任何模块)放在哪里,以便其他程序可以访问它们。我在该主题上找到了两个不同的 Python 帮助页面(herehere),这最终似乎表明文件需要在文件夹中(或者可能是某个子文件夹,我不太明白行话)包含 Python 可执行文件或在当前目录中。据我所知,默认的当前目录是使用PYTHONPATH 环境变量设置的。但是,在设置 PYTHONPATH 后,如下面的屏幕截图所示。 . .

我打开了一个新的 Python shell 并检查了当前目录是什么。下面是生成的输出。

>>> import os
>>> os.getcwd()
'C:\\Program Files\\Python33'
>>>

有人可以解释一下我做错了什么以及我是如何做到的(如果可能的话),以便我可以访问我编写的任何给定脚本,这些脚本放在我选择的某个特定文件夹中指定我的主要工作目录(或此类目录的某个子文件夹)?我不想在C:/Program Files/Python33 目录中工作。

如果需要更多信息,我很乐意提供。请告诉我。

【问题讨论】:

  • PYTHONPATH 是 Python 解释器查找在当前目录中找不到的模块的地方。要启动 shell,您可以将启动脚本的路径放入名为 PYTHONSTARTUP 的环境变量中,该变量将在您启动 Python shell 时执行。您应该能够使该脚本提示您当前工作目录应该是什么并更改为它。或者,您可以执行一些单独的步骤,以设置每次启动 shell 时要更改的目录,该 shell 保存在某处,然后由您的自定义启动脚本使用。

标签: python windows file-management


【解决方案1】:

你好像打开了python的交互模式。我不是 100% 确定,但实际上我敢打赌,Windows 上的 cwd 和 *NIXes 默认设置为调用解释器的目录。

所以问题是你是如何打开你的 python shell 的?可能来自C:\Program Files\Python33 或者使用了一些以cwd 开头的IDE,这是python 二进制文件所在的实际目录。

您几乎可以随时放置文件,并从那里相对地工作。但是,您必须相应地调整您的cwd。以任何方式。通常 IDE 会提供一些项目选项来手动设置 cwd。您可以从某个基本目录运行脚本。例如

cd D:
cd D:\my_python_dir\
python test.py

应该可以。同样不给test.py作为第二个参数应该启动交互式shell,os.getcwd()应该给D:/my_python_dir或等效结果。

最后,如果您使用交互式 shell,您可以随时使用其他 os 函数 os.chdir(path)

【讨论】:

  • 仅供参考:cd 对 C 驱动器以外的驱动器的更改不起作用。为此,只需输入D:。进入该驱动器后,cd 按预期工作。
  • 一旦我处于 Python 的交互模式,我将如何执行我的脚本之一?使用您的示例,我将如何在 Python 的交互模式中执行 test.py
【解决方案2】:

你没有做错任何事。当前工作目录C:/Program Files/Python33 和你设置的PYTHONPATH=D:/Google Drive/Python 是两个不同的东西。

使用您当前的配置,您可以轻松地将模块(*.py 文件)和包(带有__init__.py 文件的文件夹)放入D:/Google Drive/Python 中,然后从任何脚本中导入它们,无论您在哪里运行它。

例如,假设您已将模块 mytest.py 放入 D:/Google Drive/Python 中。现在你可以创建脚本D:/workspace/test.py(无论你在哪里创建)

import mytest

print(mytest.__file__)

D:/workspace/python test.py 运行它会打印D:/Google Drive/Python/mytest.pyD:\\Google Drive\\Python\\mytest.py(手边没有窗口:()。

【讨论】:

    【解决方案3】:

    我认为你把这两个弄乱了。

    PYTHONPATH模块文件的默认搜索路径。你可以阅读Environment variables。它没有定义您的工作目录。

    os.getcwd 返回一个代表当前工作目录的字符串。它是您打开 shell 的目录。例如,如果我在/home/hugh 中打开shell,它会返回/home/hugh/。如果要更改当前工作目录,可以使用os.chdir

    如果你想访问你编写的模块,你可以把它们放在你当前的工作目录或者PYTHONPATH。如果它们在PYTHONPATH 中,则与您的工作目录无关。您可以阅读有关module search path 的更多信息。

    【讨论】:

      猜你喜欢
      • 2013-09-29
      • 1970-01-01
      • 2019-04-22
      • 2019-06-08
      • 1970-01-01
      • 2014-11-18
      • 1970-01-01
      • 2018-07-29
      • 1970-01-01
      相关资源
      最近更新 更多