我创建了脚本 python 并将其移至 /usr/bin 并通过 sdfgdgh 命名脚本而不使用 .py 并在脚本中编写此代码
#! /usr/bin/python
print("worked")
Run Code Online (Sandbox Code Playgroud)
我得到了脚本 chmod +x
但是当我输入终端 sdfgdgh 给我错误:
错误的解释器没有这样的文件或目录 /usr/bin/python
为什么?解决方案是什么?
我有一个Intel HEX文件,我想要一个二进制文件.如何,在python中?
我认为使用binascii模块,但我不知道哪种功能最合适.谢谢
我有一个带有 uint8_t * 参数的函数:
uint8_t* ihex_decode(uint8_t *in, size_t len, uint8_t *out)
{
uint8_t i, hn, ln;
for (i = 0; i < len; i+=2) {
hn = in[i] > '9' ? (in[i]|32) - 'a' + 10 : in[i] - '0';
ln = in[i+1] > '9' ? (in[i+1]|32) - 'a' + 10 : in[i+1] - '0';
out[i/2] = (hn << 4 ) | ln;
}
return out;
}
Run Code Online (Sandbox Code Playgroud)
我将此功能与:
uint8_t data[SPM_PAGESIZE]; // SPM_PAGESIZE = 256 bytes
uint8_t sysex_data[SPM_PAGESIZE/2];
ihex_decode(data, strlen(data), sysex_data); …Run Code Online (Sandbox Code Playgroud) 我正在编写OPC客户端,所以我使用Python OpenOPC库。
问题是每次我阅读OPC项目列表时,我的应用都会消耗内存。
例如,以下代码每次迭代消耗约100ko:
#!/usr/bin/python
# -*- coding: utf-8 -*-
import OpenOPC
import time
import gc
gc.set_debug(gc.DEBUG_LEAK)
client = OpenOPC.client()
while True:
client.connect('CODESYS.OPC.DA')
dataList = client.list("PLC2.Application.GVL.*")
res = client.read(dataList)
client.close()
print gc.collect()
print gc.garbage
time.sleep(2)
Run Code Online (Sandbox Code Playgroud)
然后垃圾收集器返回:
0
[]
Run Code Online (Sandbox Code Playgroud)
当我关闭应用程序时,内存被释放。
所以我不明白为什么我的应用程序会泄漏内存以及如何避免这种情况。
你有什么主意吗?谢谢
我想将两个ASCII字节转换为一个十六进制字节.例如.
0x30 0x43 => 0x0C , 0x34 0x46 => 0x4F ...
ASCII字节是介于0和9之间的数字A和F(和大写字母之间)之间的字母,所以介于0x30...... 0x39和0x41... 之间0x46
我知道如何0x4F用数字0x34和"构建"0x46 : 0x4F = 0x34 * 0x10 + 0x46
所以,实际上,我想以十六进制值转换一个ASCII字节.
为此,我可以构建和数组以将十六进制值分配给ASCII字符:
0x30 => 0x00
0x31 => 0x01
...
0x46 => 0x0F
Run Code Online (Sandbox Code Playgroud)
但是,也许它有一个最"适当"的解决方案.
该程序将在AVRμC上运行并使用avr-gcc,因此scanf()/ printf()解决方案不适用.
你有个主意吗?谢谢
我想知道它是否有办法做我想要的.
使用format字符串内置方法,可以将float打印为int:
some_float = 1234.5678
print '%02d' % some_float # 1234
Run Code Online (Sandbox Code Playgroud)
也可以通过扩展类string.Formatter来做到这一点:
class MyFormatter(Formatter):
def format_field(self, value, format_spec):
if format_spec == 't': # Truncate and render as int
return str(int(value))
return super(MyFormatter, self).format_field(value, format_spec)
MyFormatter().format("{0}{1:t}", "", 1234.567) # returns "1234"
Run Code Online (Sandbox Code Playgroud)
我想打印一个int作为浮点数:
some_int = 12345678
print '{WHAT?}'.format(some_int) # I want 1234.5678
print '{WHAT ELSE?}'.format(some_int) # I want 123456.78
Run Code Online (Sandbox Code Playgroud)
你知道怎么做吗?
使用format或其他任何事情但请记住,我事先并不知道十进制数字的数量
我使用Eclipse的Python插件:Linux上的PyDev,我正在编写一个跨平台的应用程序.
在这个应用程序中,我有以下行代码:
try :
from win32com.shell import shellcon, shell
appdata_path = shell.SHGetFolderPath(0, shellcon.CSIDL_APPDATA, 0, 0)
except :
appdata_path = os.environ['APPDATA']
Run Code Online (Sandbox Code Playgroud)
PyDev给我看了2个错误:
Unresolved import: shell
Unresolved import: shellcon
Run Code Online (Sandbox Code Playgroud)
出现这些错误是因为pywin32我的系统上没有安装扩展,我无法安装它,因为有windows扩展,而不是linux.
它是否有办法隐藏或忽略(仅)这些错误?
谢谢
由于许可,我设法使用 PySide 而不是 PyQt。
我需要使用信号/插槽机制在线程之间传递自定义对象。使用 PyQt,我可以使用该PyQt_PyObject类型作为信号参数,但显然,这种类型在 PySide 中不存在:
TypeError: Unknown type used to call meta function (that may be a signal): PyQt_PyObject
Run Code Online (Sandbox Code Playgroud)
我试图使用object而不是,PyQt_PyObject但事情只发生在信号和插槽之间的 DirectConnection 类型:
self.connect(dummyEmitter,
QtCore.SIGNAL("logMsgPlain(object)"),
self._logMsgPlain,
QtCore.Qt.DirectConnection)
Run Code Online (Sandbox Code Playgroud)
使用 QueuedConnection,我收到一个错误:
QObject::connect: Cannot queue arguments of type 'object'
(Make sure 'object' is registered using qRegisterMetaType().)
Run Code Online (Sandbox Code Playgroud)
我说“事情发生了”,因为它到目前为止还行不通。由于 DirectConnection 类型,我现在遇到错误:
QObject::startTimer: timers cannot be started from another thread
QPixmap: It is not safe to use pixmaps outside the GUI thread
etc ...
Run Code Online (Sandbox Code Playgroud)
我应该怎么做 ?PySide 中是否有类似 PyQt_PyObject …