我想检测模块是否已更改.现在,使用inotify很简单,您只需要知道要从中获取通知的目录.
如何在python中检索模块的路径?
我想获取当前文件的目录路径.
我试过了:
>>> os.path.abspath(__file__)
'C:\\python27\\test.py'
Run Code Online (Sandbox Code Playgroud)
但是如何检索目录的路径?例如:
'C:\\python27\\'
Run Code Online (Sandbox Code Playgroud) 我有脚本调用其他脚本文件,但我需要获取当前在该进程中运行的文件的文件路径.
例如,假设我有三个文件.使用execfile:
script_1.py电话script_2.py.script_2.py打电话script_3.py.我怎样才能获得的文件名和路径script_3.py,从内部代码script_3.py,而无需从传递这些信息作为参数script_2.py?
(执行os.getcwd()返回原始起始脚本的文件路径而不是当前文件的.)
我想看看在python中确定当前脚本目录的最佳方法是什么?
我发现,由于调用python代码的方法很多,很难找到一个好的解决方案.
这是一些问题:
__file__如果脚本执行时未定义exec,execfile__module__ 仅在模块中定义用例:
./myfile.pypython myfile.py./somedir/myfile.pypython somedir/myfile.pyexecfile('myfile.py') (来自另一个脚本,可以位于另一个目录中,并且可以有另一个当前目录.我知道没有完美的解决方案,但我正在寻找解决大多数情况的最佳方法.
最常用的方法是os.path.dirname(os.path.abspath(__file__)),如果你从另一个脚本执行脚本,这实际上不起作用exec().
任何使用当前目录的解决方案都将失败,根据调用脚本的方式或者可以在运行的脚本中更改它,可能会有所不同.
如何从Python [3.3]中找到正在运行的Python脚本的目录?我尝试了以下建议:如何使用Python查找脚本的目录?,但我得到"语法无效"并指向"os"(我确实导入了os).
我得到答案的最接近的是:sys.argv [0],但仍然包含文件名,所以我不能使用它.还有其他方法吗?
注意:我对Python很新.
这是我到目前为止所做的一些代码(它表示rundir = sys.argv [0]的部分是建议的代码所在的部分):
import pygame
from pygame.locals import *
import os, sys
import time
pygame.init()
import statuscheck
print("Completed program status check.")
import mods.modlist
print("Loaded all mods..")
print("Completed loading")
sys.dont_write_bytecode = True
rundir = sys.argv[0]
print("Running from" + rundir)
Run Code Online (Sandbox Code Playgroud) 所以有很多非常相似的问题,但没有一个答案似乎满足我正在寻找的东西.
基本上我在命令行中使用绝对目录运行python脚本.
在这个文件本身,我想导入一个模块/文件,我目前使用绝对路径来做这个(sys.path.append(/....).
但是我想使用一个相对路径,相对于脚本本身.
我似乎能做的就是追加相对于我目前工作目录的路径.
我该怎么做呢?
我想在python中创建当前工作目录之外的文件.这是我的目录结构.
|--myproject
| |-- gui
| | |-- modules
| | | |-- energy
| | | | |-- configuration
| | | | | |-- working_file.py
| |-- service
| | |-- constants
| | | |-- global_variables.json
Run Code Online (Sandbox Code Playgroud)
我目前正在工作/myproject/gui/energy/configuration/working_file.py,我想在/myproject/service/constantsnamed 下创建一个文件global_variables.json
我试过了
with open("../../../../../service/constants/global_variables.json", 'w') as file_handler:
content = json.load(file_handler)
Run Code Online (Sandbox Code Playgroud) 为了工作,我正在尝试从Excel VBA宏运行Python脚本.
宏如下 -
Sub Plot()
Shell "C:\Users\maheshda\AppData\Local\Continuum\Anaconda3\python.exe C:\Users\maheshda\Tool\Tool\Main.py", vbNormalFocus
End Sub
Run Code Online (Sandbox Code Playgroud)
从命令行运行时脚本运行得很好,但不幸的是,因为我在Python脚本中使用相对文件路径(在某一点上,我从'../Input/'调用文件)脚本崩溃,因为当前工作目录不是C:\ Users\maheshda\Tool\Tool.
如何从宏中更改工作目录?谢谢!