在Python中,我可以使用哪些命令来查找:
我想检测模块是否已更改.现在,使用inotify很简单,您只需要知道要从中获取通知的目录.
如何在python中检索模块的路径?
我有脚本调用其他脚本文件,但我需要获取当前在该进程中运行的文件的文件路径.
例如,假设我有三个文件.使用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代码:
import os
print os.getcwd()
Run Code Online (Sandbox Code Playgroud)
我os.getcwd()用来获取脚本文件的目录位置.当我从命令行运行脚本时它给了我正确的路径,而当我从Django视图中的代码运行的脚本运行它时,它会打印出来/.
如何从Django视图运行的脚本中获取脚本的路径?
更新:
总结到目前为止的答案 - os.getcwd()并且os.path.abspath()都给出当前工作目录,该目录可能是也可能不是脚本所在的目录.在我的网站主机设置中只提供没有路径的文件名.__file__
在Python中没有任何方法(总是)能够接收脚本所在的路径吗?
我有一个名为test1.py的脚本,它不在模块中.它只有在脚本本身运行时才能执行的代码.没有函数,类,方法等.我有另一个作为服务运行的脚本.我想从作为服务运行的脚本中调用test1.py.
例如:
print "I am a test"
print "see! I do nothing productive."
Run Code Online (Sandbox Code Playgroud)
# Lots of stuff here
test1.py # do whatever is in test1.py
Run Code Online (Sandbox Code Playgroud)
我知道一种方法是打开文件,读取内容,并基本上评估它.我假设有一个更好的方法来做到这一点.或者至少我希望如此.
我正在构建一个简单的帮助脚本,用于将代码库中的几个模板文件复制到当前目录.但是,我没有存储模板的目录的绝对路径.我确实有一个来自脚本的相对路径,但是当我调用脚本时,它将其视为相对于当前工作目录的路径.有没有办法指定这个相对url来自脚本的位置?
我在Windows 7上使用Python 3.2.当我打开Python shell时,我如何知道当前目录是什么以及如何将其更改为我的模块所在的另一个目录?
这似乎是一个新手问题,但事实并非如此.一些常见的方法并不适用于所有情况:
这意味着使用path = os.path.abspath(os.path.dirname(sys.argv[0])),但如果您从另一个目录中的另一个Python脚本运行,这不起作用,这可能发生在现实生活中.
这意味着使用path = os.path.abspath(os.path.dirname(__file__)),但我发现这不起作用:
py2exe没有__file__属性,但有一个解决方法execute()没有__file__属性NameError: global name '__file__' is not defined回答不完整的相关问题:
我正在寻找一个通用的解决方案,一个适用于所有上述用例的解决方案.
这是测试用例的结果:
a.py: __file__= a.py
a.py: os.getcwd()= C:\zzz
b.py: sys.argv[0]= a.py
b.py: __file__= a.py
b.py: os.getcwd()= C:\zzz
Run Code Online (Sandbox Code Playgroud)
#! /usr/bin/env python
import os, sys
print "a.py: sys.argv[0]=", sys.argv[0]
print "a.py: __file__=", __file__
print …Run Code Online (Sandbox Code Playgroud) 有没有办法在Python中指定命令的运行目录subprocess.Popen()?
例如:
Popen('c:\mytool\tool.exe', workingdir='d:\test\local')
Run Code Online (Sandbox Code Playgroud)
我的Python脚本位于 C:\programs\python
是否可以C:\mytool\tool.exe在目录中运行D:\test\local?
如何设置子流程的工作目录?
我每分钟从crontab运行一个python shell:
* * * * * /home/udi/foo/bar.py
Run Code Online (Sandbox Code Playgroud)
/home/udi/foo有一些必要的子目录,比如/home/udi/foo/log和/home/udi/foo/config,/home/udi/foo/bar.py指的是.
问题是crontab从不同的工作目录运行脚本,因此尝试打开./log/bar.log失败.
有没有一种很好的方法告诉脚本将工作目录更改为脚本自己的目录?我想要一个适用于任何脚本位置的解决方案,而不是明确地告诉脚本它在哪里.
编辑:
os.chdir(os.path.dirname(sys.argv[0]))
Run Code Online (Sandbox Code Playgroud)
是最紧凑的优雅解决方案.感谢您的回答和解释!
python ×10
directory ×3
path ×2
django-views ×1
file ×1
getcwd ×1
inotify ×1
module ×1
popen ×1
python-3.2 ×1
python-3.x ×1
scripting ×1
subprocess ×1
windows ×1