请考虑以下Python代码:
import os
print os.getcwd()
Run Code Online (Sandbox Code Playgroud)
我os.getcwd()
用来获取脚本文件的目录位置.当我从命令行运行脚本时它给了我正确的路径,而当我从Django视图中的代码运行的脚本运行它时,它会打印出来/
.
如何从Django视图运行的脚本中获取脚本的路径?
更新:
总结到目前为止的答案 - os.getcwd()
并且os.path.abspath()
都给出当前工作目录,该目录可能是也可能不是脚本所在的目录.在我的网站主机设置中
只提供没有路径的文件名.__file__
在Python中没有任何方法(总是)能够接收脚本所在的路径吗?
似乎python支持许多不同的命令来停止脚本执行.
我发现的选择是: quit()
,exit()
,sys.exit()
,os._exit()
我错过了吗?他们之间有什么区别?你什么时候用?
有没有办法defaultdict(defaultdict(int))
让以下代码工作?
for x in stuff:
d[x.a][x.b] += x.c_int
Run Code Online (Sandbox Code Playgroud)
d
需要根据x.a
和x.b
元素进行临时构建.
我可以用:
for x in stuff:
d[x.a,x.b] += x.c_int
Run Code Online (Sandbox Code Playgroud)
但后来我无法使用:
d.keys()
d[x.a].keys()
Run Code Online (Sandbox Code Playgroud) 找到/返回符合特定标准的第一个列表项的最优雅和有效的方法是什么?
例如,如果我有一个对象列表,我想得到属性的第一个对象obj.val==5
.我当然可以使用列表理解,但这会产生O(n),如果n很大,那就太浪费了.break
一旦达到标准,我也可以使用循环,但我认为可能有更多的pythonic /优雅解决方案.
我想更改模型中特定字段的名称:
class Foo(models.Model):
name = models.CharField()
rel = models.ForeignKey(Bar)
Run Code Online (Sandbox Code Playgroud)
应改为:
class Foo(models.Model):
full_name = models.CharField()
odd_relation = models.ForeignKey(Bar)
Run Code Online (Sandbox Code Playgroud)
使用南方最简单的方法是什么?
Matplotlib似乎需要$ DISPLAY环境变量,这意味着正在运行的X服务器.
某些Web托管服务不允许运行X服务器会话.
有没有办法在没有正在运行的X服务器的情况下使用matplotlib生成图形?
[username@hostname ~]$ python2.6
Python 2.6.5 (r265:79063, Nov 23 2010, 02:02:03)
[GCC 4.1.2 20080704 (Red Hat 4.1.2-48)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import matplotlib.pyplot as plt
>>> fig = plt.figure()
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/pyplot.py", line 270, in figure
**kwargs)
File "/home/username/lib/python2.6/matplotlib-1.0.1-py2.6-linux-i686.egg/matplotlib/backends/backend_tkagg.py", line 80, in new_figure_manager
window = Tk.Tk()
File "/usr/local/lib/python2.6/lib-tk/Tkinter.py", line 1643, in __init__
self.tk = _tkinter.create(screenName, baseName, className, interactive, wantobjects, …
Run Code Online (Sandbox Code Playgroud) 在eclipse中调试java应用程序时,我在两种情况下收到" Source not found "错误:
文件在那里,但是eclipse不会进入它们,而是显示一个" 附加源 " 按钮
我尝试附加(打开一个对话框来定义变量?!),eclipse确实跳转到文件,但调试器无法检查那里的任何变量.另外,为每个依赖项手动附加源代码也不实用,因为在我的情况下有数千个依赖项文件.
我是eclipse\java的新手,所以解释为什么会发生这种情况+如何解决这个问题会有很大帮助!
哪个Visual Studio\Visual C++文件类型应该提交到版本控制?
在我的项目中,我有以下文件类型:
aps
cpp
exe
filters
h
ico
idb
ipch
lastbuildstate
lib
log
manifest
obj
pch
pdb
rc
rc2
res
sdf
sln
suo
tlog
txt
user
vcxproj
Run Code Online (Sandbox Code Playgroud)
我非常感谢每个人的简短推理.如果其中任何一个存在争议,请注意.为了完整性,我故意包括甚至是琐碎的文件类型.
编辑
一方面,我希望将来能够独立于平台.另一方面,在不久的将来,我想与具有类似设置的团队成员合作.设置之间的文件夹兼容性当然是一种选择,因此如果简化工作流程,则可以包含保存路径的配置文件.
再一次,我肯定会感谢解释什么是什么.
默认情况下logging.Formatter('%(asctime)s')
,使用以下格式打印:
2011-06-09 10:54:40,638
Run Code Online (Sandbox Code Playgroud)
其中638是毫秒.我需要将逗号更改为点:
2011-06-09 10:54:40.638
Run Code Online (Sandbox Code Playgroud)
格式化我可以使用的时间:
logging.Formatter(fmt='%(asctime)s',datestr=date_format_str)
Run Code Online (Sandbox Code Playgroud)
但是文档没有指定如何格式化毫秒.我发现这个SO问题谈论微秒,但是a)我更喜欢毫秒和b)以下不适用于Python 2.6(我正在研究),因为%f
:
logging.Formatter(fmt='%(asctime)s',datefmt='%Y-%m-%d,%H:%M:%S.%f')
Run Code Online (Sandbox Code Playgroud) 模拟有一个有用的assert_called_with()
方法.但是,据我所知,这只检查最后一次调用方法.
如果我有连续3次调用模拟方法的代码,每次使用不同的参数,我如何用它们的特定参数断言这3个调用?
python ×8
collections ×1
debugging ×1
directory ×1
django ×1
django-south ×1
django-views ×1
eclipse ×1
file-type ×1
getcwd ×1
java ×1
list ×1
logging ×1
matplotlib ×1
mocking ×1
time ×1
visual-c++ ×1