如何使用 python 3获取当前的工作目录?

在 IDLE 中运行下列脚本时

import os
print(os.getcwd())

我得到的输出是

D:\testtool

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

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

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

269706 次浏览

It seems that IDLE changes its current working dir to location of the script that is executed, while when running the script using cmd doesn't do that and it leaves CWD as it is.

To change current working dir to the one containing your script you can use:

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

The __file__ variable is available only if you execute script from file, and it contains path to the file. More on it here: Python __file__ attribute absolute or relative?

Using pathlib you can get the folder in which the current file is located. __file__ is the pathname of the file from which the module was loaded. Ref: docs

import pathlib


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

Doc ref: link

Python's default pathlib library provides the cwd like so:

import pathlib


pathlib.Path.cwd()