小编Pet*_*ete的帖子

在Python中将年/月/日转换为年份

我正在使用Python"datetime"模块,即:

>>> import datetime
>>> today = datetime.datetime.now()
>>> print today
2009-03-06 13:24:58.857946
Run Code Online (Sandbox Code Playgroud)

我想计算一年中对闰年敏感的日期.例如,今天(2009年3月6日)是2009年的第65天. 这是基于网络的DateTime计算器.

无论如何,我看到两个选项:

  1. 创建一个number_of_days_in_month数组= [31,28,...],判断它是否为闰年,手动总结天数

  2. 使用datetime.timedelta进行猜测,然后二元搜索正确的一年:

.

>>> import datetime
>>> YEAR = 2009
>>> DAY_OF_YEAR = 62
>>> d = datetime.date(YEAR, 1, 1) + datetime.timedelta(DAY_OF_YEAR - 1)
Run Code Online (Sandbox Code Playgroud)

这些都感觉很笨重,我有一种直觉,那就是有更多的"Pythonic"方式计算一年中的一天.有什么想法/建议吗?

python datetime

119
推荐指数
6
解决办法
11万
查看次数

Python:如何对子目录中的所有源文件运行unittest.main()?

我正在开发一个包含多个源文件的Python模块,每个源文件都有自己的源代码测试类,这些测试类源自unittest.考虑目录结构:

dirFoo\
    test.py
    dirBar\
        __init__.py
        Foo.py
        Bar.py
Run Code Online (Sandbox Code Playgroud)

要测试Foo.py或Bar.py,我会在Foo.py和Bar.py源文件的末尾添加它:

if __name__ == "__main__":
    unittest.main()
Run Code Online (Sandbox Code Playgroud)

并在任一源上运行Python,即

$ python Foo.py
...........
----------------------------------------------------------------------
Ran 11 tests in 2.314s

OK
Run Code Online (Sandbox Code Playgroud)

理想情况下,我会"test.py"自动搜索dirBar以获取任何unittest派生类,并调用"unittest.main()".在实践中这样做的最佳方法是什么?

我尝试使用Python为dirBar中的每个*.py文件调用execfile,它为找到的第一个.py文件运行一次并退出调用test.py,然后我必须通过添加unittest.main()来复制我的代码每个源文件 - 违反DRY原则.

python unit-testing

57
推荐指数
4
解决办法
5万
查看次数

你如何使用Fortran 90模块数据

假设您有一个包含大量变量,函数和子例程的Fortran 90模块.在您的USE陈述中,您遵循哪种惯例:

  1. 使用, only :语法显式声明您正在使用哪些变量/函数/子例程,例如 USE [module_name], only : variable1, variable2, ...
  2. 插入毯子USE [module_name]

一方面,该only子句使代码更加冗长.但是,它会强制您在代码中重复自己,如果您的模块包含许多变量/函数/子例程,那么事情就会开始变得难以驾驭.

这是一个例子:

module constants
  implicit none
  real, parameter :: PI=3.14
  real, parameter :: E=2.71828183
  integer, parameter :: answer=42
  real, parameter :: earthRadiusMeters=6.38e6
end module constants

program test
! Option #1:  blanket "use constants"
!  use constants
! Option #2:  Specify EACH variable you wish to use.
  use constants, only : PI,E,answer,earthRadiusMeters
  implicit none …
Run Code Online (Sandbox Code Playgroud)

fortran module conventions fortran90

36
推荐指数
3
解决办法
5万
查看次数

用csh成语检查环境变量是否存在?

我有一些csh脚本,我需要在开始做之前检查某些环境变量是否已设置,所以我做了这样的事情:

if ! $?STATE then
    echo "Need to set STATE"
    exit 1
endif

if ! $?DEST then
    echo "Need to set DEST"
    exit 1
endif
Run Code Online (Sandbox Code Playgroud)

这是很多打字.是否有更优雅的习惯用于检查环境变量是否已经设置?

笔记:

  • 这个问题非常相似,但具体询问bash中的解决方案.
  • 我不是在寻找人们建议我远离csh因为它被诅咒,吓人或者打击更好.我特别感兴趣的是比我现在使用的更优雅的解决方案.

csh environment-variables

30
推荐指数
1
解决办法
3万
查看次数

Python包装状态:Buildout,Distribute,Distutils,EasyInstall等

上次我不得不担心安装Python软件包是两年前与Enthought,NumPyMayaVi2合作的.这种经历给了我挥之不去的噩梦,这些噩梦与在非标准位置($HOME/usr/local2.6/例如)中安装和更新Python包的古怪行为有关.

无论如何,我的工作让我回到安装各种Python包.该Cheeseshop上教程中提到的distutils和EasyInstall除了扩建!我很难找到一个比较这些(和其他)PyPi安装工具的地方,所以我希望进入StackOverflow社区: 每个安装工具的优点和缺点是什么?

python distutils buildout easy-install distribute

24
推荐指数
3
解决办法
3092
查看次数

在python脚本中加载环境模块

有没有办法让python脚本加载和使用环境模块os.system('module load xxx')因为它在子shell中执行它们不起作用(至少,我认为这是正在发生的事情).

python module environment-variables environment-modules

21
推荐指数
1
解决办法
9478
查看次数

使用C语言计算中缀表达式的最简单方法是什么?

假设用户输入中缀表达式作为字符串?使用C语言评估表达式结果的最简单方法(最简单的意思是短语 t)是什么?

可能的方法是将其转换为后缀然后使用stacks.But它相当长的过程.有没有办法使用像atoi()eval()这样的函数来简化工作?

c math expression infix-notation evaluate

16
推荐指数
3
解决办法
6070
查看次数

inf和NaN的内部表示是什么?

我和朋友正在讨论今天午餐时Inf和NaN的存储方式.

以Fortran 90为例.4字节实数可以获得Inf或NaN的值.这是如何在内部存储的?据推测,4字节实数是由32位二进制数内部表示的数字.Inf和NaN是否存储为33位二进制数?

fortran

10
推荐指数
2
解决办法
4662
查看次数

在哪里放置不是模型,视图,控制器或帮助器的Rails代码?

我想在我的Rails应用程序中共享与几个控制器之间的视图无关的代码.我应该在目录结构中的哪个位置放置它?

编辑:有问题的代码,如果所有控制器都使用它来确定它们如何呈现模型数据

ruby model-view-controller ruby-on-rails

8
推荐指数
2
解决办法
546
查看次数

CUDA,OpenCL,PGI等......但是GLSL和Cg发生了什么?

CUDA,OpenCL和波特兰集团提供的GPU选项非常有趣......结果令人印象深刻(某些组的加速速度提高125倍).听起来下一波GPGPU工具已经准备好主宰科学计算世界.但是,当GLSL和Cg宣布时,我还记得同样的大肆宣传.

GLSL和Cg发生了什么?支持被取消了吗?人们仍然使用GLSL和Cg在GPU上进行通用计算吗?

hpc gpgpu

7
推荐指数
1
解决办法
3617
查看次数