查找当前目录和文件的目录
在Python中,我可以使用哪些命令来查找:
- 当前目录(当我运行Python脚本时在terminal中)和
- 我正在执行的文件是?
要获取包含Python文件的目录的完整path,请在该文件中写入:
import os dir_path = os.path.dirname(os.path.realpath(__file__))   (注意,如果你已经使用os.chdir()来改变你当前的工作目录,上面的咒语将不起作用,因为__file__常量的值是相对于当前工作目录的,并且不会被os.chdir()改变os.chdir()调用。) 
获取当前工作目录使用
 import os cwd = os.getcwd() 
以上使用的模块,常量和函数的文档参考:
-   os和os.path模块。
-   __file__常量
-   os.path.realpath(path)(返回“指定文件名的规范path,消除path中遇到的任何符号链接” )
-   os.path.dirname(path)(返回“path名path的目录名称” )
-   os.getcwd()(返回“表示当前工作目录的string” )
-   os.chdir(path)( “将当前工作目录更改为path” )
当前工作目录: os.getcwd()
而__file__属性可以帮助你找出你正在执行的文件的位置。 这个SOpost解释了一切: 如何获得Python中当前执行文件的path?
您可能会发现这有用的作为参考:
 import os print("Path at terminal when executing this file") print(os.getcwd() + "\n") print("This file path, relative to os.getcwd()") print(__file__ + "\n") print("This file full path (following symlinks)") full_path = os.path.realpath(__file__) print(full_path + "\n") print("This file directory and name") path, filename = os.path.split(full_path) print(path + ' --> ' + filename + "\n") print("This file directory only") print(os.path.dirname(full_path)) 
1.获取当前目录的完整path
  >>import os >>print os.getcwd() 
o / p:“C:\ Users \ admin \ myfolder”
1.单独获取当前目录文件夹名称
  >>import os >>str1=os.getcwd() >>str2=str1.split('\\') >>n=len(str2) >>print str2[n-1] 
O / P: “MyFolder文件”
如果您正在尝试查找当前所在文件的当前目录:
操作系统不可知的方式:
 dirname, filename = os.path.split(os.path.abspath(__file__)) 
晚会有点迟,但我认为最简单的方法就是find当前执行环境的名称
 current_folder_path, current_folder_name = os.path.split(os.getcwd()) 
回答#1:
如果您想要当前目录,请执行以下操作:
 import os os.getcwd() 
如果您只需要任何文件夹名称,并且具有该文件夹的path,请执行以下操作:
 def get_folder_name(folder): ''' Returns the folder name, given a full folder path ''' return folder.split(os.sep)[-1] 
回答#2:
 import os print os.path.abspath(__file__) 
 如果你使用的是Python 3.4,那么有一个全新的更高级的pathlib模块,它允许你方便地调用pathlib.Path.cwd()来获得一个代表你当前工作目录的Path对象以及许多其他的新特性。 
关于这个新API的更多信息可以在这里find。
 如果您正在search当前执行的脚本的位置,则可以使用sys.argv[0]来获取完整path。 
要获取当前目录的完整path:
os.path.realpath( '')
Pathlib可以用这种方式获取包含当前脚本的目录:
 import pathlib filepath = pathlib.Path(__file__).resolve().parent 
 在Python 3.4中引入的 pathlib模块( PEP 428  –  pathlib模块 – 面向对象的文件系统path )使path相关的体验更好。 
 $ pwd /home/skovorodkin/stack $ tree . └── scripts ├── 1.py └── 2.py 
 为了得到当前的工作目录,使用Path.cwd() : 
 from pathlib import Path print(Path.cwd()) # /home/skovorodkin/stack 
 要获得脚本文件的绝对path,请使用Path.resolve()方法: 
 print(Path(__file__).resolve()) # /home/skovorodkin/stack/scripts/1.py 
 要获得脚本所在目录的path,请访问.parent (build议在.resolve()之前调用.resolve() ): 
 print(Path(__file__).resolve().parent) # /home/skovorodkin/stack/scripts 
 请记住, __file__在某些情况下不可靠: 如何在Python中获取当前执行文件的path?  。 
 请注意, Path.cwd() , Path.resolve()和其他Path方法返回path对象(在我的情况下是PosixPath ),而不是string。 在Python 3.4和3.5中引起了一些痛苦,因为open内置函数只能用于string或字节对象,并且不支持Path对象,所以必须将Path对象转换为string或使用Path.open()方法,但是后一个选项需要你改变旧的代码: 
 $ cat scripts/2.py from pathlib import Path p = Path(__file__).resolve() with p.open() as f: pass with open(str(p)) as f: pass with open(p) as f: pass print('OK') $ python3.5 scripts/2.py Traceback (most recent call last): File "scripts/2.py", line 11, in <module> with open(p) as f: TypeError: invalid file: PosixPath('/home/skovorodkin/stack/scripts/2.py') 
 正如你所看到的, open(p)不适用于Python 3.5。 
  PEP 519  – 添加一个在Python 3.6中实现的文件系统path协议 ,增加了对PathLike对象的支持来open函数,所以现在可以直接传递Path对象来open函数: 
 $ python3.6 scripts.py OK 
 对于问题1,使用os.getcwd() # get working dir和os.chdir(r'D:\Steam\steamapps\common') # set working dir 
 我build议在问题2中使用sys.argv[0] ,因为sys.argv是不可变的,因此总是返回当前文件(模块对象path),不受os.chdir()影响。 你也可以这样做: 
 import os this_py_file = os.path.realpath(__file__) # vvv Below comes your code vvv # 
 但是这个代码片段和sys.argv[0]将不起作用,或者在PyInstaller编译时会工作,因为magic属性没有在__main__级别设置, sys.argv[0]是你的exe被调用的方式(意味着它会受到影响由工作目录)。 
为了看到当前的工作目录types如下脚本:
 import os currentWorkingDirectory = os.getcwd() 
在Python中获取和设置工作目录。 你可以使用下面的代码:
import os cwd = os.getcwd()#for获取工作目录