82

当我在 IDLE 中运行以下脚本时

import os
print(os.getcwd())

我得到输出

D:\testtool

但是当我从 cmd 提示符运行时,我得到

c:\Python33>python D:\testtool\current_dir.py
c:\Python33

如何获得与使用 IDLE 相同的结果?

4

3 回答 3

118

似乎 IDLE 将其当前工作目录更改为执行脚本的位置,而在使用 cmd 运行脚本时并没有这样做,它使 CWD 保持原样。

要将当前工作目录更改为包含您的脚本的目录,您可以使用:

import os
os.chdir(os.path.dirname(__file__))
print(os.getcwd())

__file__仅当您从文件执行脚本时,该变量才可用,并且它包含文件的路径。更多信息在这里:Python __file__ 属性是绝对的还是相对的?

于 2013-06-28T09:30:48.243 回答
21

使用 pathlib 可以获取当前文件所在的文件夹。__file__是从中加载模块的文件的路径名。参考:文档

import pathlib

current_dir = pathlib.Path(__file__).parent
current_file = pathlib.Path(__file__)

文档参考:链接

于 2017-07-08T08:57:44.010 回答
8

Python 的默认pathlib库提供 cwd,如下所示:

import pathlib

pathlib.Path.cwd()
于 2021-03-18T15:57:19.983 回答