如何确定:
当前目录(运行Python脚本时我在shell中的位置),以及我正在执行的Python文件在哪里?
如何确定:
当前目录(运行Python脚本时我在shell中的位置),以及我正在执行的Python文件在哪里?
当前回答
对于问题1,使用os.getcwd()#获取工作目录和os.chdir(r'D:\SSteam\stamapps\common')#设置工作目录
我建议对问题2使用sys.argv[0],因为sys.argv是不可变的,因此始终返回当前文件(模块对象路径),不受os.chdir()的影响。也可以这样做:
import os
this_py_file = os.path.realpath(__file__)
# vvv Below comes your code vvv #
但当PyInstaller编译时,该代码段和sys.argv[0]将无法工作或工作异常,因为魔法财产没有在__main__level中设置,而sys.argv[0]是调用可执行文件的方式(这意味着它会受到工作目录的影响)。
其他回答
如果您使用的是Python3.4,有一个全新的高级pathlib模块,它允许您方便地调用pathlib.Path.cwd()以获取表示当前工作目录的Path对象,以及许多其他新功能。
有关此新API的更多信息,请参阅此处。
当前工作目录:os.getcwd()
__file__属性可以帮助您找到正在执行的文件的位置。这篇StackOverflow文章解释了一切:如何在Python中获取当前执行文件的路径?
对于问题1,使用os.getcwd()#获取工作目录和os.chdir(r'D:\SSteam\stamapps\common')#设置工作目录
我建议对问题2使用sys.argv[0],因为sys.argv是不可变的,因此始终返回当前文件(模块对象路径),不受os.chdir()的影响。也可以这样做:
import os
this_py_file = os.path.realpath(__file__)
# vvv Below comes your code vvv #
但当PyInstaller编译时,该代码段和sys.argv[0]将无法工作或工作异常,因为魔法财产没有在__main__level中设置,而sys.argv[0]是调用可执行文件的方式(这意味着它会受到工作目录的影响)。
要获取Python文件所在目录的完整路径,请在该文件中写入以下内容:
import os
dir_path = os.path.dirname(os.path.realpath(__file__))
(请注意,如果您已经使用os.chdir()更改了当前工作目录,则上面的咒语将不起作用,因为__file__常量的值是相对于当前工作目录的,并且不会被os.chdir()调用更改。)
要获取当前工作目录,请使用
import os
cwd = os.getcwd()
上述模块、常数和函数的文档参考:
os和os.path模块。__file__常量os.path.realpath(路径)(返回“指定文件名的规范路径,消除路径中遇到的任何符号链接”)os.path.dirname(路径)(返回“路径名路径的目录名”)os.getcwd()(返回“表示当前工作目录的字符串”)os.chdir(路径)(“将当前工作目录更改为路径”)
要获取当前目录的完整路径,请执行以下操作:
os.path.realpath('.')