Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/360.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 当前工作目录究竟是什么?_Python_Macos_Python 3.x - Fatal编程技术网

Python 当前工作目录究竟是什么?

Python 当前工作目录究竟是什么?,python,macos,python-3.x,Python,Macos,Python 3.x,我的书说: 计算机上运行的每个程序都有一个当前工作目录或cwd。任何不以根文件夹开头的文件名或路径都假定位于当前工作目录下 由于我在OSX上,我的根文件夹是/。当我在Python shell中键入os.getcwd()时,我会得到/Users/apple/Documents。为什么我在cwd中获取文档文件夹?是不是说Python正在使用Documents文件夹?难道没有任何指向Python的路径以/(根文件夹)开头吗?另外,是否每个程序都有不同的cwd?这与osx无关,尤其是,它更像是所有基于u

我的书说:

计算机上运行的每个程序都有一个当前工作目录或cwd。任何不以根文件夹开头的文件名或路径都假定位于当前工作目录下


由于我在OSX上,我的根文件夹是/。当我在Python shell中键入
os.getcwd()
时,我会得到
/Users/apple/Documents
。为什么我在cwd中获取文档文件夹?是不是说Python正在使用Documents文件夹?难道没有任何指向Python的路径以
/
(根文件夹)开头吗?另外,是否每个程序都有不同的cwd?

这与osx无关,尤其是,它更像是所有基于unix的系统所共有的概念,我相信Windows也是如此
os.getcwd()
相当于bash
pwd
命令-它只返回当前所在位置的完整路径。换言之:

alex@suse:~> cd /
alex@suse:/> python
Python 2.7.12 (default, Jul 01 2016, 15:34:22) [GCC] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import os
>>> os.getcwd()
'/'

它取决于您从何处开始python shell/脚本。

通常可以从任何目录访问python(除非您使用的是虚拟环境)。您可以检查路径中的变量,Python应该是可用的。因此,当您询问Python时得到的目录就是您启动Python的目录。在启动Python之前更改shell中的目录,您将看到您将使用它。

os.getcwd()
与OSX无关。它只返回源文件的目录/位置。如果我的源文件在我的桌面上,它将返回
C:\Users\Dave\desktop\
,或者说源文件保存在外部存储设备上,它可能返回类似
G:\Programs\
的内容。对于基于unix的系统和Windows系统都是一样的。

python解释器的位置取决于启动它的方式,以及启动后采取的后续操作,就像使用操作系统模块导航文件系统一样。仅仅启动解释器就会将您放在python安装目录中(不同操作系统上的目录不同)。另一方面,如果您从编辑或运行特定目录中的文件开始,您的位置将是您正在编辑的文件的文件夹。如果您需要在某个目录中运行解释器,并且您正在使用idle(例如),那么最简单的方法是以这种或那种方式在那里创建一个python文件,当您编辑它时,您可以使用run>pythonshell启动一个shell,该shell将已经在该目录中。如果正在使用命令行解释器,请在运行python/python3/py命令之前导航到要在其中运行解释器的文件夹。如果您需要手动导航,您当然可以使用以下已经提到的功能:

import os
os.chdir('full_path_to_your_directory')

每个进程都有一个当前目录。当进程启动时,它只是从其父进程继承当前目录(例如,它没有设置为包含加载当前进程中运行的程序的文件的目录)

要获得更详细的解释,请继续阅读

当磁盘变得足够大以至于您不希望所有文件都在同一个位置时,操作系统供应商想出了一种在目录中构造文件的方法。因此,您可以在这些目录中创建新集合和其他新集合,而不是将所有内容保存在同一个目录(或初学者现在学习的“文件夹”)中

从根本上说,目录只是一种特殊类型的文件,其内容是其他文件的集合,也可以包括其他目录

在一个原始的操作系统上,故事就这样结束了。如果您想打印一个名为
term\u paper.txt
的文件,该文件位于
spring\u sement
目录中,而该目录又位于
2021
目录中,该目录位于
studies
目录下
mine
,您必须说:

print mine/studies/2021/spring_semester/term_paper.txt
(除了命令可能比打印更神秘之外,目录分隔符可能是一些疯狂的东西,比如方括号和冒号之类的东西

lpr [mine:studies:2021:spring_semester]term_paper.txt
但这对于本次展览并不重要)如果你想复制文件,你必须将整个enchilada拼两遍:

copy mine/studies/2021/spring_semester/term_paper.txt mine/studies/2021/spring_semester/term_paper.backup
然后出现了当前工作目录的概念。如果你可以说“从现在开始,直到我说不一样的时候,我所说的所有文件都将在这个特定的目录中”。因此,
cd
命令诞生了(除了在像VMS这样的旧系统上,它被称为更笨重的东西,比如
SET DEFAULT

这就是一切。当您
cd
(或者在Python中,
os.chdir()
)时,您可以更改当前的工作目录。它将一直保持,直到您注销(或退出此过程),或直到您
cd
到其他工作目录,或切换到另一个窗口,在该窗口中您正在运行一个单独的命令,该命令有自己的当前工作目录。正如您可以在不同的目录中打开文件浏览器(Explorer、Finder、Nautilus或其他任何名称),您可以打开多个终端,每个终端运行一个shell,该shell有自己独立的当前工作目录

python /home/you/bin/script.py file.txt
因此,当你说
pwd
(或
cwd
或命令语言中调用的任何命令)时,结果将在很大程度上取决于你以前在该窗口中执行的操作,并且可能取决于你如何创建该窗口。在许多类似Unix的系统上,当您创建新的终端时,它最初是在您的主目录中打开的(在许多Unix系统上是
/home/you
,在Mac上是
/Users/you
,在最近的Windows上是
C:\Users\you
),不过您的终端可能可以配置为在其他地方打开(在某些操作系统上,通常
桌面
文档
位于您的主目录中。)
cd /home/you/bin
./frobozz
cd /bin
./ls
python /home/you/bin/script.py file.txt
python ./script.py file.txt