如何知道/更改 Python shell 中的当前目录?

Posted

技术标签:

【中文标题】如何知道/更改 Python shell 中的当前目录?【英文标题】:How to know/change current directory in Python shell? 【发布时间】:2012-01-05 02:40:33 【问题描述】:

我在 Windows 7 上使用 Python 3.2。当我打开 Python shell 时,我如何知道当前目录是什么以及如何将其更改为我的模块所在的另一个目录?

【问题讨论】:

这已经在 [这里] [1] 讨论过:***.com/questions/431684/how-do-i-cd-in-python @astay13 -- 我认为 Ignacio 的意思是您不打算将目录更改为模块路径。您可能应该检查 PYTHONPATH 环境变量。 经典 XY 问题 【参考方案1】:

你可以试试这个:

import os

current_dir = os.path.dirname(os.path.abspath(__file__))   # Can also use os.getcwd()
print(current_dir)                                         # prints(say)- D:\abc\def\ghi\jkl\mno"
new_dir = os.chdir('..\\..\\..\\')                         
print(new_dir)                                             # prints "D:\abc\def\ghi"


【讨论】:

【参考方案2】:

在 python 中更改当前工作目录的最简单方法是使用“os”包。下面是windows电脑的例子:

# Import the os package
import os

# Confirm the current working directory 
os.getcwd()

# Use '\\' while changing the directory 
os.chdir("C:\\user\\foldername")

【讨论】:

“\\”的使用以及关于 Windows 计算机的说明。但我同意接受的答案更具描述性。【参考方案3】:

您可以使用os 模块。

>>> import os
>>> os.getcwd()
'/home/user'
>>> os.chdir("/tmp/")
>>> os.getcwd()
'/tmp'

但如果是寻找其他模块:你可以设置一个名为PYTHONPATH的环境变量,在Linux下会像

export PYTHONPATH=/path/to/my/library:$PYTHONPATH

然后,解释器也在这个地方搜索imported 模块。我猜这个名字在windows下应该是一样的,但是不知道怎么改。

编辑

在 Windows 下:

set PYTHONPATH=%PYTHONPATH%;C:\My_python_lib

(取自http://docs.python.org/using/windows.html

编辑 2

... 甚至更好:使用virtualenvvirtualenv_wrapper,这将允许您创建一个开发环境,您可以在其中添加您喜欢的模块路径(add2virtualenv),而不会污染您的安装或“正常”工作环境。

http://virtualenvwrapper.readthedocs.org/en/latest/command_ref.html

【讨论】:

是否必须在 Windows 命令行或 Python shell 中设置 PYTHONPATH? @simon ;) astay13:你必须在命令行中设置它,但我想有一个图形菜单可以让它持久化(否则你必须在每次重启时重新设置它或一些这样,就我而言,每次登录时)。 @astay13:在 Windows 上,您可以将其设置为全局环境变量。目前没有要检查的 Windows 系统,但我认为您可以在“控制面板 -> 系统”下找到它——它在某处:) @astray13:您还可以选择忽略环境变量,而是在脚本中附加到sys.path @astay13:如果您安装了多个 Python(或者安装了与 Python 捆绑在一起的程序——换句话说,您永远不会知道),请不要全局设置 PYTHONPATH:它可能会破坏您在mysterious ways中的安装【参考方案4】:
>>> import os
>>> os.system('cd c:\mydir')

其实os.system()可以执行windows命令提示符可以执行的任何命令,而不仅仅是改变目录。

【讨论】:

文件“”,第 1 行 os.system('cd c:\Users\Ajeya\Documents\') ^ SyntaxError: EOL while scanning string literal【参考方案5】:

更改当前目录不是处理在 Python 中查找模块的方法。

相反,请参阅The Module Search Path 的文档,了解 Python 如何找到要导入的模块。

这是来自Standard Modules 部分的相关内容:

变量 sys.path 是一个字符串列表,用于确定 解释器的模块搜索路径。它被初始化为默认值 从环境变量 PYTHONPATH 或从 如果未设置 PYTHONPATH,则为内置默认值。您可以使用修改它 标准列表操作:>>> import sys >>> sys.path.append('/ufs/guido/lib/python')

回答关于获取和设置当前目录的原始问题:

>>> help(os.getcwd)

getcwd(...)
    getcwd() -> path

    Return a string representing the current working directory.

>>> help(os.chdir)

chdir(...)
    chdir(path)

    Change the current working directory to the specified path.

【讨论】:

这个答案是金..只需像这样添加您的项目目录:import sys sys.path.append('/home/g/PycharmProjects/your_project/') 【参考方案6】:

你想要的

import os
os.getcwd()
os.chdir('..')

【讨论】:

os.chdir('C:\Users\Ajeya\Documents\') ^ SyntaxError: EOL while scanning string literal @Whatever,如果您在常规(非原始)Python 字符串中使用反斜杠,则需要加倍反斜杠。 Python 还允许您使用正斜杠。因此,要么os.chdir('C:/Users/Ajeya/Documents'),要么os.chdir('C:\\Users\\Ajeya\\Documents'),要么os.chdir(r'C:\Users\Ajeya\Documents') 请注意,您调用os.getcwd() 仅用于调试目的,这样我们就可以在更改工作目录之前查看它是什么。实际更改cwd 的代码只是os.chdir('..')【参考方案7】:

如果你import os你可以使用os.getcwd获取当前工作目录,你可以使用os.chdir改变你的目录

【讨论】:

以上是关于如何知道/更改 Python shell 中的当前目录?的主要内容,如果未能解决你的问题,请参考以下文章

python如何实现像shell中的case功能

运行 Node 脚本时更改当前 shell 上下文中的工作目录

如何在脚本中获取进程ID

如何更改 Python 日志记录中的时区?

python shell中的默认函数[重复]

在 python shell 中更改用户