It looks like R's cor.test returns p-values of exactly zero if the real p-value is very low. For example:
> sprintf('%e', cor.test(1:100, c(1.2, 1:98, 1.1), method='spearman')$p.value)
[1] "0.000000e+00"
In SciPy this same test results in a very low, but nonzero, p-value:
> print scipy.stats.spearmanr(range(100), [1.2]+range(98)+[1.1])
(0.94289828982898294, 1.3806191275561446e-48)
Presumably the p-value gets rounded down to 0 if the value becomes so small that R cannot represent it anymore using its normal floating point type? Is there a simple way to obtain the exact number or is the best I can do to report p < 2.2e-16?