对于在Python中截断为三个小数感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍python截断小数,并为您提供关于python-2.7–在python中将多行写入文件的问题、Python-在
对于在Python中截断为三个小数感兴趣的读者,本文将会是一篇不错的选择,我们将详细介绍python 截断小数,并为您提供关于python-2.7 – 在python中将多行写入文件的问题、Python-在Python中对子进程进行非阻塞读取、python-如何在python中更详细地规范二维numpy数组?、Python-如何设置小数位格式以始终显示2个小数位?的有用信息。
本文目录一览:- 在Python中截断为三个小数(python 截断小数)
- python-2.7 – 在python中将多行写入文件的问题
- Python-在Python中对子进程进行非阻塞读取
- python-如何在python中更详细地规范二维numpy数组?
- Python-如何设置小数位格式以始终显示2个小数位?
在Python中截断为三个小数(python 截断小数)
我如何获得1324343032.324?
如您在下面看到的,以下内容不起作用:
>>1324343032.324325235 * 1000 / 10001324343032.3243253>>int(1324343032.324325235 * 1000) / 1000.01324343032.3239999>>round(int(1324343032.324325235 * 1000) / 1000.0,3)1324343032.3239999>>str(1324343032.3239999)''1324343032.32''
答案1
小编典典float()
如果要将其保存为,可以在其周围使用其他内容float
。
%.3f''%(1324343032.324325235)
python-2.7 – 在python中将多行写入文件的问题
我得到了它们,但是代码在另一个顶部的每个链接上都存在,最后它只保留一个链接:(.我也不想重复网址
def dlink(self,image_url): r = self.session.get(image_url,stream=True) with open('Output.txt','w') as f: f.write(image_url + '\n')
解决方法
Edit
我的错误,因为它是一种方法,你会多次调用它,如果你以写模式(‘w’)或类似方式打开它,如果文件存在,它将覆盖现有文件.
所以,如果你使用’a’方式,你可以看到:
Opens a file for appending. The file pointer is at the end of the file
if the file exists. That is,the file is in the append mode. If the
file does not exist,it creates a new file for writing.
image_url中的另一个基本问题是列表,因此您需要逐行编写它:
def dlink(self,'a') as f: for url in list(set(image_url)): f.write(image_url + '\n')
另一种方法:
your_file = open('Output.txt','a') r = self.session.get(image_url,stream=True) for url in list(set(image_url)): your_file.write("%s\n" % url) your_file.close() #dont forget close it :)
Python-在Python中对子进程进行非阻塞读取
如何解决Python-在Python中对子进程进行非阻塞读取?
fcntl
,select
,asyncproc
不会在这种情况下帮助。
不管使用什么操作系统,一种可靠的读取流而不阻塞的方法是使用Queue.get_Nowait()
:
import sys
from subprocess import PIPE, Popen
from threading import Thread
try:
from queue import Queue, Empty
except ImportError:
from Queue import Queue, Empty # python 2.x
ON_POSIX = ''posix'' in sys.builtin_module_names
def enqueue_output(out, queue):
for line in iter(out.readline, b''''):
queue.put(line)
out.close()
p = Popen([''myprogram.exe''], stdout=PIPE, bufsize=1, close_fds=ON_POSIX)
q = Queue()
t = Thread(target=enqueue_output, args=(p.stdout, q))
t.daemon = True # thread dies with the program
t.start()
# ... do other things here
# read line without blocking
try: line = q.get_Nowait() # or q.get(timeout=.1)
except Empty:
print(''no output yet'')
else: # got line
# ... do something with line
解决方法
我使用subprocess
模块启动一个子流程并连接到它的输出流(stdout
)。我希望能够在它的标准输出上执行非阻塞读取。在调用.readline
之前,是否有方法使.readline
不阻塞或检查流中是否有数据?我希望它是可移植的,或者至少在Windows
和Linux
下工作。
这是我目前的操作方式(.readline
如果没有可用数据,则会阻塞):
p = subprocess.Popen(''myprogram.exe'',stdout = subprocess.PIPE)
output_str = p.stdout.readline()
python-如何在python中更详细地规范二维numpy数组?
给定3乘3的numpy数组
a = numpy.arange(0,27,3).reshape(3,3)
# array([[ 0,3,6],# [ 9,12,15],# [18,21,24]])
为了规范二维数组的行,我想到了
row_sums = a.sum(axis=1) # array([ 9,36,63])
new_matrix = numpy.zeros((3,3))
for i,(row,row_sum) in enumerate(zip(a,row_sums)):
new_matrix[i,:] = row / row_sum
必须有更好的方法,不是吗?
可能需要澄清:通过标准化我的意思是,每行条目的总和必须为1。但是我认为这对于大多数人来说都是显而易见的。
Python-如何设置小数位格式以始终显示2个小数位?
我要显示:
49 如 49.00
和:
54.9 如 54.90
不管小数点的长度或是否有小数位,我都希望显示一个Decimal
带有2个小数位的a
,并且我想以一种有效的方式做到这一点。目的是显示货币值。
例如, 4898489.00
答案1
小编典典我想你可能正在使用模块中的Decimal()
对象decimal
?(如果你需要精确到小数点后两位任意大数的精度,则绝对应该如此,这就是你的问题标题所建议的……)
如果是这样,则文档的“ 十进制常见问题解答”部分将包含一个问题/答案对,这可能对你有用:
问:在具有两位小数位的定点应用程序中,某些输入有很多位,需要四舍五入。其他人不应有多余的数字,需要进行验证。应该使用什么方法?
答:quantize()方法四舍五入到固定的小数位数。如果设置了不精确陷阱,则它对于验证也很有用:
>>> TWOPLACES = Decimal(10) ** -2 # same as Decimal(''0.01'')>>> # Round to two places>>> Decimal(''3.214'').quantize(TWOPLACES)Decimal(''3.21'')>>> # Validate that a number does not exceed two places>>> Decimal(''3.21'').quantize(TWOPLACES, context=Context(traps=[Inexact]))Decimal(''3.21'')>>> Decimal(''3.214'').quantize(TWOPLACES, context=Context(traps=[Inexact]))Traceback (most recent call last): ...Inexact: None
下一个问题是
问:一旦有了有效的两个位置输入,如何在整个应用程序中保持不变?
如果你需要答案(以及许多其他有用的信息),请参阅docs
的上述部分。另外,如果你将Decimals
的精度保持在小数点后两位(这意味着将所有数字保持在小数点的左边,而将所有数字保持在小数点的右边,则不再需要其他精度…),然后将它们转换为str
可以正常工作:
str(Decimal(''10''))# -> ''10''str(Decimal(''10.00''))# -> ''10.00''str(Decimal(''10.000''))# -> ''10.000''
答案2
小编典典你应该使用新的格式规范来定义应如何表示值:
>>> from math import pi # pi ~ 3.141592653589793>>> ''{0:.2f}''.format(pi)''3.14''
该文档有时可能会有些晦涩,因此我建议你使用以下更容易阅读的参考文献:
- 在Python字符串格式菜谱:显示了新样式的例子
.format()
字符串格式化 - pyformat.info:比较旧式%字符串格式和新式
.format()
字符串格式
Python 3.6引入了文字字符串插值(也称为f字符串),因此现在你可以将上面的文字更简洁地编写为:
>>> f''{pi:.2f}''''3.14''
关于在Python中截断为三个小数和python 截断小数的问题就给大家分享到这里,感谢你花时间阅读本站内容,更多关于python-2.7 – 在python中将多行写入文件的问题、Python-在Python中对子进程进行非阻塞读取、python-如何在python中更详细地规范二维numpy数组?、Python-如何设置小数位格式以始终显示2个小数位?等相关知识的信息别忘了在本站进行查找喔。
本文标签: