我试图用"Temp:"作为前缀在一个字符串中返回我的驱动器的温度.为此,我运行一个简单的脚本,用于将字符串与命令的输出连接起来.
import subprocess
command = "sudo smartctl -A /dev/sda | egrep Temperature_Celsius | awk '{print $10}'"
print "Temp " + str(subprocess.call(command, shell=True))
Run Code Online (Sandbox Code Playgroud)
结果:
29
Temp 0
Run Code Online (Sandbox Code Playgroud)
当我删除'print'行时,'29'也没有显示.因此,当我使用print语句时,脚本由于某种原因(?!)返回'29'然后返回0,而29实际上是正确的值.
我希望我能得到这个:
Temp: 29
Run Code Online (Sandbox Code Playgroud)
我试图使用os.system,并给出相同的结果.我也尝试将命令直接添加到"command = str(subprocess.call("但它给出了相同的结果.我已经阅读了os.system info页面和subprocess.call信息页面,我没有找到然后我用谷歌搜索AWK命令,也许它创建了一些疯狂的输出,但我找不到任何有用的东西.
Linux 2.7上的Python 2.7.0-34-通用#49-Ubuntu SMP Tue 11月12日18:00:10 UTC 2013 x86_64 x86_64 x86_64 GNU/Linux
我在python中写了一个脚本,这让我感到惊讶.基本上,它需要五个20位数字,然后将它们相乘,然后将它们提升到3000的幂.时间模块用于查找计算计算所需的时间.好吧,当我运行这个脚本时,它说需要3*10 ^ -7秒来计算它.然后它生成一个文件output.txt,但脚本直到大约15秒后才会结束.
import timeit
outputFile = open("output.txt", "w")
start = timeit.default_timer()
x = (87459837581209463928*23745987364728194857*27385647593847564738*10293769154925693856*12345678901234567891)**3000
stop = timeit.default_timer()
time = stop-start
print "Time taken for the calculation was {} seconds".format(time)
outputFile.writelines(str(x))
outputFile.close()
y = raw_input("Press enter to exit.")
Run Code Online (Sandbox Code Playgroud)
这是否意味着打印280kb文件实际上需要花费更长的时间而不是执行计算?(我发现它不太可能.)
如果不是这样,那么python是否在调用变量x时执行计算?它是在每次计算变量时执行计算,还是将实际值存储在变量中?
我刚刚编写了另一个脚本,它确认将结果写入.txt文件需要python 0.03秒.那么,为什么python稍后会执行计算呢?
int fcntl(int fd, int command, ... /* arg */ );
Run Code Online (Sandbox Code Playgroud)
它是便携的:( flags = fcntl(fd, F_GETFL);注意:不arg)?
F_GETFL (void)
Get the file access mode and the file status flags; arg
is ignored.
Run Code Online (Sandbox Code Playgroud)
void在Linux文档中意味着arg不需要.
#include <unistd.h>
#include <fcntl.h>
...
int flags;
flags = fcntl(fd, F_GETFD);
if (flags == -1)
/* Handle error */;
flags |= FD_CLOEXEC;
if (fcntl(fd, F_SETFD, flags) == -1)
/* …Run Code Online (Sandbox Code Playgroud) 很简单,但我是一个蟒蛇新手.我正在尝试使用特殊格式打印当前的UTC日期和时间:
Python 2.6.6
import datetime, time
print time.strftime("%a %b %d %H:%M:%S %Z %Y", datetime.datetime.utcnow())
TypeError: argument must be 9-item sequence, not datetime.datetime
Run Code Online (Sandbox Code Playgroud) 我很好奇 python 源代码如何设置 Py_FileSystemDefaultEncoding 的值。我收到了一件奇怪的事情。
由于python doc about sys.getfilesystemencoding() 说:
在 Unix 上,根据 nl_langinfo(CODESET) 的结果,编码是用户的偏好,如果 nl_langinfo(CODESET) 失败,则为 None。
我使用 python 2.7.6
``
>>>import sys
>>>sys.getfilesystemencoding()
>>>'UTF-8'
>>>import locale
>>>locale.nl_langinfo(locale.CODESET)
>>>'ANSI_X3.4-1968'
Run Code Online (Sandbox Code Playgroud)
```
这里的问题是:为什么 getfilesystemencoding() 的值与 locale.nl_landinfo() 的值不同,因为文档说 getfilesystemencoding() 是从 locale.nl_landinfo() 派生的。
这是我终端中的语言环境命令输出:
LANG=en_US.UTF-8
LANGUAGE=en_US:en
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC=zh_CN.UTF-8
LC_TIME=zh_CN.UTF-8
LC_COLLATE="en_US.UTF-8"
LC_MONETARY=zh_CN.UTF-8
LC_MESSAGES="en_US.UTF-8"
LC_PAPER=zh_CN.UTF-8
LC_NAME=zh_CN.UTF-8
LC_ADDRESS=zh_CN.UTF-8
LC_TELEPHONE=zh_CN.UTF-8
LC_MEASUREMENT=zh_CN.UTF-8
LC_IDENTIFICATION=zh_CN.UTF-8
LC_ALL=
Run Code Online (Sandbox Code Playgroud) 我仍然不完全理解python的unicode和str类型是如何工作的.注意:我在Python 2中工作,据我所知,Python 3对同一问题有完全不同的方法.
我所知道的:
str 是一种较老的野兽,可以保存由历史迫使我们使用的太多编码之一编码的字符串.
unicode 是一种更标准化的方式来表示字符串使用一个巨大的表格,包括所有可能的字符,表情符号,狗屎的小图片等等.
该decode函数将字符串转换为unicode,反之亦然encode.
如果我,在python的shell中,只需说:
>>> my_string = "some string"
Run Code Online (Sandbox Code Playgroud)
然后my_string是一个str编码的变量ascii(并且,因为ascii是utf-8的子集,它也被编码utf-8).
因此,例如,我可以unicode通过说出其中一行来将其转换为变量:
>>> my_string.decode('ascii')
u'some string'
>>> my_string.decode('utf-8')
u'some string'
Run Code Online (Sandbox Code Playgroud)
我不知道的是:
Python如何处理在shell中传递的非ascii字符串,并且知道这一点,保存单词的正确方法是"kožuš?ek"什么?
例如,我可以说
>>> s1 = 'kožuš?ek'
Run Code Online (Sandbox Code Playgroud)
在这种情况下s1成为str我无法转换为的实例unicode:
>>> s1='kožuš?ek'
>>> s1
'ko\x9eu\x9a\xe8ek'
>>> print s1
kožuš?ek
>>> s1.decode('ascii')
Traceback (most recent call last):
File "<pyshell#23>", line 1, in <module>
s1.decode('ascii') …Run Code Online (Sandbox Code Playgroud) 我有两个需要合并的元组列表.这与数据库术语中的JOIN相当.每个列表中元组的顺序可能会改变.元组中项目的顺序不会改变.A中的项目数应该等于B中的数量,但可能存在差异.
这是我的两个元组列表.每个列表中将有10,000多个这样的元组,因此性能是一个问题.每个元组中的第一个元素是每个列表共有的键.
listA = [(u'123', u'a1', u'a2', 123, 789), (u'124', u'b1', u'b2', 456, 357), (u'125', u'c1', u'c2', 156, 852)]
listB = [(u'125', u'd1', u'N', u'd2', 1), (u'123', u'f1', u'Y', u'f2', 2)]
Run Code Online (Sandbox Code Playgroud)
所需的输出是:
listC = [(u'123', u'a1', u'a2', 123, 789, u'f1', u'Y', u'f2', 2), (u'125', u'c1', u'c2', 156, 852, u'd1', u'N', u'd2', 1)]
Run Code Online (Sandbox Code Playgroud)
这是我为测试这个概念而拼凑的代码.它可以工作,但正如你所看到的,性能是一个问题.使用真实数据运行时此代码的性能(每个列表中有10个项目)是不可接受的,因为它可能需要数小时才能完成.
这是代码:
for row in listA:
for item in listB:
if item[0] == row[0]:
item = list(item)
del item[0]
row = list(row)
merged.append(tuple(row + item))
Run Code Online (Sandbox Code Playgroud)
如何合并/加入这两个列表并获得更好的性能?
从源代码我以JSON格式检索一些数据.我想将这些数据(及时测量)保存为文本文件.我反复想要使用相同的信号源并查看是否有新的测量值,如果是,我想将其添加到其他测量值.
我得到的数据如下:
{"xyz":[{"unixtime":"1458255600","time":"00:00","day":"18\/03","value":"11","paramlabel":"30-500 mHz","popupcorr":"550","iconnr":"7","paramname":"30-500 mHz"},{"unixtime":"1458256200","time":"00:10","day":"18\/03","value":"14","paramlabel":"30-500 mHz","popupcorr":"550","iconnr":"7","paramname":"30-500 mHz"},etc.]}
Run Code Online (Sandbox Code Playgroud)
我将这些数据加载到pandas DataFrame中,以便能够更轻松地使用它.但是,当我将其加载到数据框中时,所有列都被视为字符串.如何确保将unixtime列视为时间戳(以便我可以转换为日期时间)?
我如何在Python代码中定义整数数组
说这个代码是否正常.或没有
pos = [int]
len = 99
for i in range (0,99):
pos[i]=7
Run Code Online (Sandbox Code Playgroud) 我正在尝试将基于 IEEE 的浮点数转换为 MIL-STD 1750A 浮点数。
我已附上两者的规格:

我了解如何按照维基百科上的示例分解 IEEE 格式的浮点 12.375 。
但是,我不确定我对 MIL-STD 的解释是否正确。
12.375 = (12)b10 + (0.375)b10 = (1100)b2 + (0.011)b2 = (1100.011)b2 (1100.011)b2 = 0.1100011 x 2^4 => 指数,E = 4。
4 标准化 2 的补码 = (100)b2 = 指数
因此,MIL-STD 1750A 32 位浮点数为:
S=0, F=11000110000000000000000, E=00000100
Run Code Online (Sandbox Code Playgroud)
我的上述解释正确吗?
对于-12.375,只是交换符号位吗?IE:
S=1, F=11000110000000000000000, E=00000100
Run Code Online (Sandbox Code Playgroud)
或者小数部分会发生什么奇怪的事情吗?
python ×7
python-2.7 ×3
datetime ×2
algorithm ×1
c ×1
c++ ×1
encoding ×1
fcntl ×1
freebsd ×1
ieee-754 ×1
linux ×1
locale ×1
pandas ×1
performance ×1
python-2.6 ×1
python-2.x ×1
string ×1
subprocess ×1
timestamp ×1
unicode ×1
unix ×1
utf-8 ×1
variables ×1